There are some legacy sample apps such as QuickSearchBox (a barebones search app using Google search) which we have listed in our issue tracker as things we need to replace with other apps. Those aren't part of the base OS and exist for testing the OS rather than real world usage. They need to be replaced rather than removed because the functionality will need to be included for compatibility. None of those apps make connections to Google simply by existing or from the user opening them, etc.
Using grep to search for Google domains and URLs across a huge source tree with more purposes than building the OS is not a viable way to identify connections that are made by the OS. A huge portion of that code is not used for the OS. A substantial portion consists of tests, sample code and code for other things like the SDK. A major portion is vendored external code (external/) where a small subset that's relevant is being used. For portions that are included, just because it implements functionality does not mean we are including the functionality or enabling it in the build configuration.
Intentional user connections, connected to user actions are one thing. Phone constantly sending pings to various addresses and services for no good reason - is very different.