It gets kind of messy to handle deletions purely by alignment of the segments that do align, since you then don't have an aligned segment to refer to to define what was deleted. You can cure this implicitly when there are aligned segments before and after the deletion, but you are kind of stuck if the deletions are at one end or the other, and really stuck when those deletions have outlying insertions with no further outlying alignments. All of this gets trivial when you are able to specify what is going on residue by residue and are allowed to match up a given residue on either side against "." I am not saying it is impossible to do it the other way, just more difficult and in need of a lot of clarifying semantics.