Ну как, вот был код у тебя. Там был допустим foreach с массивами. Причём очень много и код повторялся. А ты такой: ух, да здесь всё в этих foreach. Заюзаю-ка я итератор. Заменяешь массивы на итераторы, код упрощается и сокращается.
Массивы конечно хороши, поначалу, но начиная с определённого момента они начинают уродовать код. Потом видишь такой код, заменяешь массив на какой-нибудь HashMap и кайфуешь, как код упростился.
Массив лишь одна из встроенных конструкций... Жаль что разработчики часто не видят, не знают, не пользуются, не понимают того что у них под носом лежит...
Да банально в отдельный класс вынести объединённый общей логикой функционал, многие просто не додумаются ( Обычно в таких случаях спрашивают: "а куда мне код поместить? в ActiveRecord модель или в контроллер? Что-то мне оба варианта не нравятся"