Google's Terms of Use does not permit commercial (esp. automated) use of the data. Yes, Google appears to parse single-line street addresses and geocodes them, but it is not appropriate for commercial purposes as Mapperz has noted.
Also, standardizing addresses will be a bit of a bugger with Google's API. Google Maps is an address approximation service, not a standardization or verification service.
For example, have you ever done street view by a house on the edge of town, or out in the suburbs, even in rural areas? Often, it will only show the street name and say "Address is approximate" -- if you had that house's actual address and typed it in Google Maps, it would probably adjust the address to the incorrect location. This happened to me yesterday near a city/county border. The mailing address I had was correct but Google got the wrong city and placed me about a mile away from the delivery point. Oops?
Fortunately that wasn't for commercial use (I only needed directions), but if you need reliable data, even their commercial license doesn't provide actual verification. You're probably looking for something like a CASS-Certified service to standardize and geocode addresses. Such a service is authorized by the USPS to correct and "fill out" address data so it is in a standard format, and must pass rigorous quality tests every so often.
I work with one such provider called SmartyStreets. We service US Street Address API which doesn't have any restrictions against commercial usage. You can reference this other GIS question to investigate its performance and capabilities, or see our website.
And I'll let you in on a little secret: while it doesn't yet appear that we parse single-line addresses, we actually do (as of this week). Submit an entire address in the "street 1" field through our API and you'll get a CASS-Certified result.
You cannot legally cache or store results from Google's Map API (with pretty narrow exceptions).
From the Terms of Service (with emphasis added):
10.1.3 Restrictions against Data Export or Copying.
...
(b) No Pre-Fetching, Caching, or Storage of Content. You must not
pre-fetch, cache, or store any Content, except that you may store: (i)
limited amounts of Content for the purpose of improving the
performance of your Maps API Implementation if you do so temporarily
(and in no event for more than 30 calendar days), securely, and in a
manner that does not permit use of the Content outside of the Service;
and (ii) any content identifier or key that the Maps APIs
Documentation specifically permits you to store. For example, you must
not use the Content to create an independent database of "places" or
other local listings information.
So option 1 it is, unless you only use the geocoding for the purposes described in the Maps API ToS, and only temporarily cache.
Best Answer
Here's a solution that doesn't require any coding. This solution will work if:
Find and download the property ownership (parcel) polygon data for the county or counties that your points are in.
Property boundaries should be available for download for most of the US. These parcel boundaries are most likely to be found on the county tax auditor's website. (Some states may also have them collected in one data clearinghouse.) An internet search for some combination of the following should work: the name of your county, "auditor," "parcel" and "shapefile."
Note: parcel files are quite large and can be slow to load. You may want to turn off rendering before importing the parcels into QGIS.
Do a spatial join between the tax parcels and the points.
If every point falls within a polygon, use the "Join Attributes by Location" tool. Detailed instructions
If some of the points are outside the parcel polygons, do a nearest neighbor join using the NNJoins plugin. Detailed instructions