I just stumbled across a new source of zip code, long lat (and population, housing, ...) data. The data is as of the 2000 Census with a vague impression that it will be kept current.
http://www.census.gov/geo/www/gazetteer/places2k.html
These aren't zip codes per se, these are zip code tabulating areas:
ZIP Code Tabulation Areas (ZCTAsTM) are a new statistical entity developed by the U.S. Census Bureau for tabulating summary statistics from Census 2000. This new entity was developed to overcome the difficulties in precisely defining the land area covered by each ZIP Code®. Defining the extent of an area is necessary in order to accurately tabulate census data for that area.
ZCTAs are generalized area representations of U.S. Postal Service (USPS) ZIP Code service areas. Simply put, each one is built by aggregating the Census 2000 blocks, whose addresses use a given ZIP Code, into a ZCTA which gets that ZIP Code assigned as its ZCTA code. They represent the majority USPS five-digit ZIP Code found in a given area. For those areas where it is difficult to determine the prevailing five-digit ZIP Code, the higher-level three-digit ZIP Code is used for the ZCTA code. For more information, please refer to the ZCTA (FAQ) Frequently Asked Questions Web page.
If you are looking to associate a name with a zip code, that data comes from the USPS. If you would like to associate a lat, long pair with a zip code tabulating area, that can come from the Census.
If you are looking to join the two to find the name most likely associated with a lat/long that sounds like a webservice.