Хороший код должен иметь четкое разделение ответственности, поэтому код маршрутизации / диспетчеризации должен контролировать, куда отправляется мой запрос.Это просто хороший дизайн, и он не должен меняться из-за языка.
Читатель кода может просто узнать из кода маршрутизации, что ожидается и куда он пойдет.Если позже вы передумаете, вы можете изменить код маршрутизации, не касаясь контроллеров.
В этом случае контроллер отвечает только за обработку запроса, что упрощает его, облегчает его понимание, уменьшает количество ошибок илегче изменить.