What's the point of having a state field at all? Isn't there a unique mapping between zip code and state? About the phone numbers, my favorite annoyance is when companies, who always are fond of making stupid mnemonics out of the letters corresponding to their phone number, don't let me enter my mnemonic for my phone number, which I picked from Google Voice specifically because it makes my name, but insists on number…
You could probably do without city as well if using zip codes. Obviously this doesn't hold water for international setups, but it could be nice for the US.
There are plenty of zip codes in Missouri that have a dozen small towns that all have 1001 Broadway as valid addresses.
There are at least 5 zip codes (possibly more, there used to be a list on wiki) that cross state, county, and city boundaries. So it's entirely possible that without the zip+4, you'd have to have both the city and the state to correctly locate an address.