Unfortunately, it's not uncommon for a zip code to be shared by more than one town, city, or municipality. http://bit.ly/e6mOs5
So while you could use this system to make an educated guess, you'd want to be very careful about getting confirmation before using the address, and that could defeat the original purpose of streamlining the data entry process.
--edit--
It might actually be uncommon, but I think you still need to take it into consideration.
From the point of view of the Postal Service, there is nothing to take into consideration. A zip code uniquely identifies a geographical area (for the purposes of mail delivery) and it does not matter if that area crosses municipal, city or county boundaries. When a zip code does cross boundaries, the Postal Service picks one city that it uses as the "Actual" name for that zip code--even though a bunch of addresses in that zip code clearly fall in a different city! This is the city name that gets returned if you do a lookup or address verification. The post office is well aware that other cities might lie in that geographic area and accepts those city names as well. For example, follow the link below and enter 28451.
http://zip4.usps.com/zip4/citytown_zip.jsp
It is true that it might confuse the user if you auto-populate the city name, but I think that in practice it wouldn't be much of a problem. If you live in a split zip code and your city's name is not the Postal Service's "Actual" name, then you are probably already used to receiving lots of mail with that other city's name on it. For example: almost all bulk mail will use the "Actual" city name.
Living in exactly this situation, I can concur that there's nothing confusing about it.
My zip code is shared with one actual city about 10 miles from my house and at least two unincorporated rural townships. You could put a completely wrong city (and I often get mail with the city listed as Minneapolis, which is about 45 miles away) and it would barely merit raising an eyebrow. My mail will still get here on time.
I always thought they would check one against the other giving priority to the city if unmatched. Whenever I have to send something by mail I always stare for a few seconds at the address while wondering what would happen if they misread it...
As pointed out by mbesto, the UK system is pretty slick, and could be refined down to just two fields, however it would require breaking the standard flow of address input forms.
With a street number, and a zip/postal code, you can get Street Name, City, and State in one fell swoop.
There is a lot of cart web forms that just have a check box asking if your shipping address is the same as your billing address, isn't that easier to implement? Not sure the added vaule of seeing it "copy" from billing to shipping...
I think you're missing the main point, which may or may not be the fault of the article, that you can auto fill (secondary info) city and state by using (primary info) zip code.
Zero fields :) is what I absolutely strive for in my UX.
Other than that, I also have logic in place to auto-insert your city and state. That's just a waste of time for the user and I honestly couldn't care less since all I really need is their Zip.
So while you could use this system to make an educated guess, you'd want to be very careful about getting confirmation before using the address, and that could defeat the original purpose of streamlining the data entry process.
--edit--
It might actually be uncommon, but I think you still need to take it into consideration.