What's the problem here?
Google provides a service "free" to customers. End-users running searches and watching YouTube videos are customers. Websites wanting to be indexed by Google also count as customers. Yes, being a customer means paying for the bandwidth. This doesn't mean you're subsidizing Google. If anything, it's the other way around - they pay for their own bandwidth, which they use to serve you, the customer, free of charge (from them). Networks might complain that their customers use a lot of bandwidth because of Google, but it's not a legitimate complaint at all - if Google wasn't doing what it did, their customers wouldn't be willing to pay as much for access to a less-useful internet.
Calling those datacenters inefficient because they're located far away is also more than a little disingenuous. While there are costs to distance, they are fairly small compared to the economies of scale that large datacenters get. Otherwise google wouldn't do it. Google owns and operates a pretty significant private backbone network, after all.
If I set up a tourist attraction on an island with a toll bridge you owned, would I be asked to pay a share of the toll for every person using that bridge to come see what I'm showing? Don't be ridiculous. You should be thanking me for getting you more customers. If all that extra traffic generates more costs than it brings in with more tolls, your tolls need to be higher - simple as that.
Networks are trying to have it both ways. They want to charge their customers for the privilege of accessing google, and then they want to charge google for encouraging so many demands from their customers. If networks don't have enough bandwidth availible, we should all just go back to paying per gigabyte of bandwidth. The only reason the network cares where that bandwidth is coming from is because it's coming from someone they realize has deep pockets. Not a good excuse.