We assume the network is stable because day to day it works. It isn't: it fails, delays, delivers twice, delivers out of order.
In-process, one compiler spans both sides of an interface and won't let the two ends drift. Move the call onto the network and you throw that arbiter away for drift, partial failure, and cross-process debugging. Pay that for a runtime reason, not to show two things are separate.
https://kore-nordmann.de/blog/hexagonal_architecture_vs_microservices.html