(Result of email discussion between Brendan and myself.)
What does it mean that something matches an array-structural type? The white paper says that [int] is a subtype of Array.
Brendan objects that that's too specific, why aren't array-like things like Vector possible? At least, should it not be true that Vector.<int> is like [int]?
My response is that since Array has a lot of intrinsic methods, several of which have signatures not remotely compatible with the corresponding methods on Vector, this is not obvious. On the other hand, array structural types are magic, so we can do what we want.
We can possibly finess it by saying that [T] as a type expression means that (a) it has a fixture called length whose value is constrained to be uint and (b) the elements named by uints are constrained to be T. (We can't require it to be dynamic, because Vector isn't, at least not if the purpose is to match Vector.)
Obviously then generic array methods could take arguments whose types are like [*], which is an improvement, though I could also express that as { length: uint }.