Моделька, у которой запрашивают данные, возвращает массив объектов из базы данных.
Дальше уже идет работа с массивом объектов.
Возьмите ситуацию, когда массив очень большой (сотни тысяч объектов) и заранее не известно, какая часть массива понадобится, то есть работать будет как-то так:
foreach ($model->getArray() as $object) {
// Делаем что-то с $object...
if (!rand(0, 10)) {
break;
}
}
Если делать так, как вы предлагаете (через array), придётся создавать и возвращать полный массив объектов, большая часть из которых не будет использована. Или менять код на что-то вроде:
foreach ($model->getIdsArray() as $id) {
// Создаём $object по $id, запросив данные из хранилища
// Делаем что-то с $object...
if (!rand(0, 10)) {
break;
}
}
С помощью ArrayObject можно легко реализовать создание только реально использовавшихся объектов массива и не дублировать код создания объектов в каждом подобном цикле.