Array - хитрореализованный список, до того хитрый, что добавление элементов с конца работает медленнее чем с 0-го (что нонсенс для Vector из С++ или List из C#)
Доступ по индексу за 0(1), удаление произвольного элемента за 0(N) - можно считать просто динамическим массивом.
В отличие от Vector - у Array доступ по индексу в 2 раза медленнее и не кидает исключений при выходе индекса за границы
Непонятно зачем, но может работать как хештаблица
Однако, если в качестве ключа в него попадёт "132423345" и сконвертится в числовой индекс - моментально огребёте с памятью. Ну и если большие числовые индексы задавать - тоже самое будет - я бы в качестве хеша не юзал.
Еще при использовании в качестве ассоциативного массива свойство lengh - вообще показывает неизвестно что, а не общее количество элементов.
Vector - Предсказуемый тип, работает практически так же как Vector из stl С++ или List из C#
Возможна типизация элементов
Но невозможны преобразования:

Код AS3:
var a:Vector<DisplayObject> = new Vector<Sprite>();// не сработает - а ведь Sprite - наследник DisplayObject
Object - он же динамический объект, он же предок всего и вся, он же Хеш-таблица
Причём, то, что он предок всего - не означает, что всё может работать как хеш-таблица. Такая вот забавная организация типов.
Если использовать как хеш-таблицу:
- любой ключ конвертирует в строку - поэтому с памятю как в случае с Array не огребёте
- но из-за этой конвертации теряет в производительности, если использовать числовые ключи
(object[13234] эквивалентно object["13234"])
Dictionary
Тоже хештаблица, но ключами могут быть любые объекты.
Со строковыми ключами работает с той же скоростью, что и Object, с числовыми не помню - но по крайней мере не шибко медленнее Object.
Применяется если в качестве ключа удобнее использовать объект, а не строку или число.