While we're at it, why (if I'm in the US) do I have to keep selecting my state, town etc., in addition to my zipcode?
You can't infer (reliably) your exact location from a zipcode because of the reasons listed in the other comments linked to your parent comment.
Zip codes are based on postal routes, cities are not.
For example ZIP code 42223 spans Christian KY and Montgomery TN, and ZIP code 97635 spans Lake OR and Modoc CA.
Zip codes are also non-contiguous in some areas, and not bounded-polygons in others which makes them really bad for geo purposes.