One monorepo per tooling
A codebase should be pristine.
In practice its rarely not. As a team grows, biases and opinions from the team members, with widely varying mindsets, pollutes the architecture and source. With the advent of LLMs this is more pronounced today than ever. Now you're dealing with bias from the entire internet.
So, in order to strive for pristineness, it is best to have automated rails as best we can to maintain consistency. Linters, tests, formatters. These are more important today than ever.
I'm also a fan of monorepos. I like the idea of everything available, all at once, to both share knowledge, and provide a common context for both team members and LLMs alike.
But, in my experience, a monorepo that supports multiple languages, resulting in the implementation of multiple tooling support, goes against the principles of code pristineness. The idioms and syntaxes of multiple languages cause havoc in code consistency.
So, I believe the best compromise is one monorepo per language. Keep the tooling, CICD, and architecture consistent for a single language. Then the rails are stabler, and there is some semblance of pristineness.