модель - данные, которыми оперирует ваша бизнес-логика.
контроллер - нечто обрабатывающее пользовательский ввод
толстые контроллеры - когда вся логика заключена в контроллерах
тонкие контроллеры - когда вся логика выносится в сервисный слой, оставляя контроллеру только контроль за тем что отдавать, а все данные обрабатываются в сервисах. То есть в этом случае контроллер не работает напрямую с моделями и active record.
сервисы - просто какие-то классы инкапсулирующие в себя какую-то работу.
Принцип единой ответственности - класс должен делать что-то одно и хорошо. Если у вас один и тот же класс отвечает за две разные вещи (валидация и сохранение данных в базе) - это нарушение этого принципа.
active record - один из шаблонов работы с базой данных который нарушает принцип единой ответственности и еще кучи других в угоду быстрой разработки. В контексте языков типа ruby или python вреда от этого не сильно много, так как все динамичненько и не скручено в кашу. Но в php, java (с партиал классами возможно и не так уж все и плохо) и т.д. почти все реализации ужасны. Но люди мирятся с этим в угоду быстрой разработке.
Вывод, правильнее будет использовать active record в сервисах, так как при active record у вас перемешаны сервисы валидации, хранения данных и сама модель. Контроллеры же должны оперировать только сервисами.