Just to reiterate what you’ve been told, it is not a “prefix.”
It is parsed as:
[[Austin, Texas]] [[78711]]
not as
[[Austin,]] [[Texas 78711]]
American cities have “official” names that are rarely used except on documents referring to the municipal government, so the official name of Austin is probably something like the “City of Austin.”
However, because of the way cities have historically been named and because of the American political system, unless it is apparent that you’re talking about the Austin that is in Texas, e.g., you are in Texas and it’s clear that you’re talking about places in Texas, it is usual to specify “Austin, Texas.” Except for maybe 20 or so “famous” cities, it is rare for the state to be left out.
For example, when people ask me my home town, I say “Dayton, Ohio,” not just “Dayton,” unless there’s already a reason for them to know that I’m talking about a place in Ohio.
So in a sense, the real name of any American city (as opposed to the official name) takes the form “[city name], [state name].”
And it is not mandatory that you use the two-letter abbreviation. I always write the name of the state out in full.
If you leave off the Zip Code, the Postal Service will still deliver the letter if they are able to, but I’m sure that slows things down somewhat.
Theoretically, you shouldn’t have to give the name of the city at all – the Zip Code should be enough.
So in a sense it’s a relict, but as others have said, it helps the people who are delivering mail to keep track of things. And it also helps the sender and the receiver out. We humans prefer names to numbers. It helps us persuade ourselves that we don’t live in Airstrip One.