Как помогает такой подход?
во первых это легче поддерживать - мелкие изменения вообще не требуют изменения логики где-либо еще
улучшенный dx, который позволет хорошо работать автокомплиту - так в другом слое импорт идет из index.ts, то измнеения внутри контроллера вообще ничего больше не затрагивает + ты всегда знаешь какой публичный интерфейс твой контроллер предлагает
я уже не говорю о том, что вместо двух уровней доступа получается 3: приватные переменные, протектед (которые нельзя даватть использовать, но которые могут участвовать в тестировании) и публичные