Как бы объяснить.
Модель сама по себе минималистична. Она знает откуда взять данные, в каком виде отдать их, и в каком засунуть обратно в базу. Также каким образом связаться с другими моделями (это уже мутация на уровне билдера). По сути, всё.
Если же совать в модель бизнес-логику, это получится жирная модель, которая, по сути, кроме своего предназначения будет еще и играть роль сервиса.
Далее, ООП придумали чтобы избавиться от дубляжа кода, а также для упрощения. Вот, например, где-то нужно получить какой-то метод - по идее, нужно обратиться к сервису, выполняющему нужную логику, но никак не к модели User, производящей
отключение модели Favorite через связующую pivot-таблицу. Это, как минимум, нелогично и вводит в заблуждение, т.к. модель User, по сути, всё что должна знать о фаворитах, так это как с ними связаться через релейшен, не более.
В данном же случае то же самое ООП применяют для усложнения логики, приговаривая "ну это же ООП, ты чоооо, это же не процедурное программирование". Блин, процедурное программирование - это совсем другое. В корне! Вынесение БИЗНЕС-ЛОГИКИ из МОДЕЛИ не нарушает ООП! Оно ИСПРАВЛЯЕТ логику приложения и упрощает работу с ним как для создателя, так и для тех кто этот код будет читать.