Ну вот это и есть нормальный separation of concerns
Нет, тут разница в том, что в таком подходе у тебя отдельные модули очень жёстко разграничены друг от друга.
На каждое взаимодействие у тебя жесткий контракт, у каждого модуля своя бд и т.д. и т.п.
Это настолько дорогое удовольствие, что плюсы монолита в скорости разработки теряются полностью.
Тогда проще уже реально разделить эти модули в отдельные приложения и получить плюсы в виде полностью независимой инфраструктуры, деплоя, возможности юзать разные языки и платформы и т.д. и т.п.