просто, в случае Array, for each перечисляет значения свойств.
то есть for each не отличает Array от Object, и перебирает у обоих только видимые для перебирания свойства.

Код AS3:
var ar:Vector.<Object> = new Vector.<Object>(5);
for each(var index:Object in ar) {
trace(index); // undefined
}