Why don't the city names in the US Zips and US Cities databases always match?

The US Zips database's city field is based on the US Postal Service's primary city.  This isn't always a city, it can be a neighborhood or place within a city. 

In contrast, the US Cities database only include place names that come from the US Census Bureau or United States Geological Survey.  It will not include neighborhoods or other places within a listed city.  Spelling conventions may vary between the USPS and the US Census Bureau and USGS.
So, city in the US Zips database has a postal-code specific meaning that differs from the meaning of city in our US Cities database.
Because of this, every city in Zips database will not appear in the US Cities database.
If you are trying to find every city that overlaps a zip code, you should use the US Cities Database and run a query on the zips field to search for your zip code of interest.  For example, to find all cities that overlap the zip code of 45208, you could use the following MySQL query on the US Cities Database:
select city, state_id from uscities WHERE INSTR(zips, '45208') > 0;