I would agree with you, but why stop at different cities? Plenty of things have multiple whole addresses, even just considering a shop’s sign. If it’s a tie on the ground, you might need to arbitrarily shunt one of the addresses over to addr2:*=* or map a second address point just to avoid losing information.
As a mapper who relishes in edge cases, I don’t see a big problem with that. It’s groundtruth that postal administrators in Ottawa wouldn’t even know about. Of course, geocoder developers and order-minded mappers might fret more about the inconsistency than I do.
In the U.S., we have a many-to-many relationship between postal cities and postal codes. For any given ZIP code, the USPS prefers one city name and accepts a number of alternative city names, holding their nose. But if I see a business advertise its address with one of the alternative names, I’m going to put that in addr:city=*. Users and mappers are more likely to use that city name. In case a geocoder needs to also index the POI under the preferred city name, it’ll have to look it up separately using the addr:postcode=* value.
Fortunately, we’ve accidentally crowdsourced an extensive open-source alternative to the paid, copyrighted USPS database. For example, this QLever query finds 10 different cities we’ve attributed to ZIP code 44122 at least once (after truncating the ZIP+4 code). Assuming each of these addr:city=* tags is correct, you can use any of the 10 cities for any address with that ZIP code. Some of them are in the USPS’s list of “City Names to Avoid”, so this is also a good QA tool.