I'm an embedded systems dev. Firmware cannot crash, especially when it's running an engine or a pacemaker. To design firmware with microservices, performing basic functions over whatever network connection you might have, would be insane.
Separation of concerns is not the same as distribution of concerns. Whenever you add a communication channel, you add a failure point and a delay, a measurable and minimum delay. Maybe that delay is small when you run 1000 microservices on the same machine, but then when it's time to "scale" across the network you increase your latency by orders of magnitude, even when you scale within the same datacenter.
To distribute concerns across the network is a valid design pattern, but it's not like waterfall v.s. agile where you maximize the "best thing" about a process, because the "beat thing" about software is not the network. Networking is a tool that has utility and tradeoffs and it always increases complexity.