This would be fine, if it was not for the fact that pretty much everyone who wants to use zip codes needs them in a topologically valid polygon format. This is a problem because roads change all the time, and this makes zip codes terribly unstable. Also, there are many zip codes that are really just points (a bit of an oversimplification, but military bases, prisons, schools, etc. often cause huge problems).
Census tracts are much more stable (topologically valid and only change every 10 years). Unfortunately, most people don't know which census tract they live in, so zips prevail. I have built several geocoding algorithms, and it always comes down to the data being the big PITA. What ends up happening, unfortunately, is that private companies pick up the slack and create topological zip codes (with high price tags).
Double unfortunately, every company has a different methodology in creating these polygons, costing everyone who uses them big money, on top of the licensing fees. The USPS could easily produce a standard set of polygons for an extra couple grand a year in labor and save the industry millions. I cannot get into much detail, but I know this issue quite intimately.