Есть очень простая и понятная ментальная модель среднестатистического разработчика.
Сущности - ряды табличек
Репозитории - таблички
Дальше из этой ментальной модели рождаются все остальные проблемы. Как дробить "сущности" - ну вспомни как в ВУЗах учат нормализации или там эти типичные булшитные задачки в стиле иерархии "студент-учитель-человек" бла бла.
Надо для UI вытащить условные посты с комментами - пост у тебя корень, потому в репозитории постов делаем "джойн" аля связь между двумя репозиториями. global coupling понесся.
Как-то когда речь идет о сложных составных репортах убедить что это надо выносить "отдельно" достаточно просто, так как не понятно кто корень. Просто куча данных.
Если же попытаться подать список постов и комментов как "репорт" то корень явно виден и "почему это не должно быть в PostRepository"? Ну и важный аспект - все эти гибернейты забирают с разработчика такую мерзскую штуку как нормализация резалт сэта. Что приятно и легко. С репортами "обычно" нет такой острой проблемы - ты всеравно будешь в CSV условный это выплевывать и опять же проще убедить.
Ну и когда народу в туториалах про N+1 рассказывают то часто можно придти к выводу что "достать все одним запросом есть цель".
В целом проблема что у нас есть вот эта модель "репозиторий = табличка" (или коллекция если монга) и какое-то оч упрощенное восприятие что данные ходят туда сюда одинаково. Поскольку "за репозиторий" никто особо не смотрит и не разбирается как данные в реальности связаны и как юзаются для чего - получаем "текущую абстракцию".
Во всяком случае это мои наблюдения за последние 5 лет.