You have to understand, many of us think microservices is a stupid idea, so the fact that the core of your argument is "monorepos make microservices difficult" is not an appealing argument.
If a monorepo puts a barrier in the way of turning everything into a microservice, then all the better, as far as I'm concerned.
Container based solutions become harder? Again… build your artifacts and deploy all the containers you want? What is so hard about this?
Meanwhile, with multi-repo you lose out on a whole host of opportunities to robustly track dependencies and keep things up to date.
You trade simplicity of having everything in one place vs. ability to independently version pieces at the cost of more complex tooling and build systems required to test.
Usually there's some sweet spot, but the answer isn't obvious and one isn't clearly better.
We do not version our services in that sense. It's a monorepo after all.
We do have microservices.
We use kubernetes.
Deployment is a breeze. Only services with changes are actually deployed.
We do hourly deploys to production.
None of the issues you describe apply here and the monorepo works awesomely for us. This is a SaaS situation where all services making up that SaaS solution and that we host are in that monorepo.
YMMV if you are in a different situation such as having to ship versioned software for customers to self host/install for example. Our accompanying software that is usable in conjunction with the SaaS solution is not part of that Monorepo and each of those are versioned and deployed to various external marketplaces.
Saying that "monorepos are only good for large scale" is pure bullshit, and something that only someone very inexperienced would say.
I'm in a very small company (less than 10 devs) but we still use a monorepo, because we have a set of common libraries for all our products, and having a monorepo helps us update those libraries without breaking anything. On the other hand, some very large companies have tried and have failed.
Monorepos are just a tool. The implementation and the context matters more than anything else.
Monorepo forces the tough conversations. Maybe the organization should only use 1 language now. Maybe we should talk about code review policies and standardization of other processes since everyone is in the same bucket. Why can't everything just compile to 1 exe?
Another massive advantage with a monorepo if you use GitHub is that you now have 1 issue bucket that covers the entire enterprise. Linking issues to commits is super powerful when this technique covers 100% of your code and exists under 1 labeling scope.