As monorepos grow huge, this comes to be very costly or even prohibitive, and companies like Google simply don't use Git.
Here are some problems with alternative approaches that have been mentioned:
* VFS for Git: I believe abandonded by MSFT in favor of improved client-side tooling: https://github.com/microsoft/VFSForGit/blob/master/docs/faq.... .
* Sparse checkout: limits ability to use a build system to dynamically find any dependencies and rebuild them
* Submodules: can't atomically update both the parent and the child repo, have to manually update the referenced commit of the child repo in the parent repo, and each collaborator must manually update their child repo when the commit changes