Google, Bing, MapQuest, and Yahoo! Maps (is this API still around?) are extremely powerful tools. They have a lot of horsepower that they put behind interpreting the address you provide and doing everything possible to make it into a properly formatted address for geocoding. To a certain degree they are free. They have volume limits and pretty strict Terms Of Service (TOS) that might be a factor if you start using their service commercially and especially if you integrate it into another product.

Keep in mind that all of them do "address approximation" NOT address verification. They will be able to tell you approximately where an address would lie on a certain street IF the address exists. They cannot tell you that the address you are looking for exists. One way to verify this is to look at your own address in Google Maps. Zoom all the way in to street view and you'll see that they state "address is approximate" even though they may have the location pinpointed exactly. They just don't have the master list of addresses to compare and know which addresses are real. For that, you will need some sort of address verification.

Address verification standardizes and cleans a given address in much the same way as the free mapping services but it also compares the addresses to the USPS database of deliverable addresses to confirm if the address really exists. The confirmed address can then be geocoded with improved accuracy.

There are a lot of good address verification services out there. In the interest of full disclosure, I'm the founder of one--SmartyStreets.