Modular Monolith is a functionally partitioned system, meaning it is not going to work for cohesive domains. I even believe that it is more or less similar to what Mark Richards calls Service-Based Architecture. Repacking a system of domain services is a matter of taste. However, you cannot create a production-ready system of services for a cohesive domain in the first place - the result it too coupled to be of any use. Such systems are implemented as (usually layered) non-distributed monoliths https://martinfowler.com/bliki/MonolithFirst.html which you can hardly call Microservices.
And once you have divided the domain functionally, you can pack that with any service-based technology and add extra layers, resulting in Microservices, Nanoservices, SOA or even device drivers. But you cannot repackage MySQL or Firefox into multiple Microservices with a reasonable performance and complexity because the original system is not functionally partitioned.
SOA is not a traditional 3-tier system. It is layers of services, not monolithic layers. And if there is too much communication inside a monolithic layer any attempt to distribute it as domain services is going to kill its performance and stability. You'll get a bag full of fine-grained IPC, cyclic dependencies, distributed transactions or even distributed deadlocks. And the thing is next to impossible to debug because any use case jumps in cycles among multiple services. Unless you stay synchronous in which case you get to deal with timeouts, including network partitioning which may result in applying the same action twice.