Для чего нужно разделение ответственности?

Во первых, разделение ответственности помогает легче работать над отдельными компонентами программы.

Во вторых - отдельные компоненты намного проще тестировать, чем всё приложение в целом.

В третьих - с помощью разделения ответственности можно легко разделить работу на нескольких разработчиков, что б каждый занимался своим делом (например один тестирует контроллер, другой - представления и тд).