I can only speak regarding my experience at Google, but the company has been moving aggressively toward industry standards for software development, primarily at the language level.
I constantly run see internal libraries in C++ being updated to use standard C++ smart pointer types, and Java being updated to use types like java.lang.Instant instead of some internal implementation created years ago.
What does tend to be custom are the systems that get built, not only because of the huge scale of operation, but also because of Google-specific security and compliance requirements. Also, the development tools and continuous integration systems are also necessarily specific to Google (and are pretty amazing).
But even then, there is extensive use of certain externally originating systems - memcached is one that comes to mind.
Why now? What were technical reasons this wasn’t done before at Google?
That’s not unique to them. Lots of Silicon Valley companies have engineering teams seeded with folks who worked whole life at Google, Facebook, etc. They default to writing custom solutions for everything, because that’s what they were taught.