I looked up a little more after posting my comment. The Census is a range based geocoding service. They state...
The current Geocoding Services engine requires a structure address be
provided. The resulting lat/long is calculated along an address range.
Google on the other hand, looks to have a variety of options in their geocoding service. I didn't find anything specific as to their data backing. However, I did find some stuff in their geocoding parameters. They have the following geocoder location types in their parameters.
location_type stores additional data about the specified location. The
following values are currently supported:
google.maps.GeocoderLocationType.ROOFTOP indicates that the returned
result reflects a precise geocode.
google.maps.GeocoderLocationType.RANGE_INTERPOLATED indicates that the
returned result reflects an approximation (usually on a road)
interpolated between two precise points (such as intersections).
Interpolated results are generally returned when rooftop geocodes are
unavailable for a street address.
google.maps.GeocoderLocationType.GEOMETRIC_CENTER indicates that the
returned result is the geometric center of a result such as a polyline
(for example, a street) or polygon (region).
google.maps.GeocoderLocationType.APPROXIMATE indicates that the
returned result is approximate.
So... It looks like Google collects data related to those types, and I would guess automatically tries each of the type as going from more precise to less precise in order to get a higher match percentage. I am sure if you want more precise details than what is available through the Google Maps developers FAQ about Google's geocoding, you could send them an e-mail.
Interesting enough, if you aren't familiar with geocoding techniques, I found a paper that compares them here.