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.