You can choose the weather location manually. I have a list of cities and default to the one I live in. There’s absolutely no reason for the weather app to know my location down to the square metre.
When you choose a weather location manually, you actually get a less fine-grained report than the one you get from a GPS-resolved location. Basically, you get weather for "the closest weather station to the geographic centre of the named city" rather than "the closest weather station to you."
This can be a big deal if your city has a large altitude range, such that going a few miles east means the difference between clouds vs. fog, or rain vs. snow; or if your city is coastal, such that going a few miles inland can mean rain vs. sun, and can make a dozen degrees' difference in temperature. (And, in some cities, you have both problems. Yay Vancouver!)
In the case where you never go anywhere, how is that different from giving them your precise location? They very likely know enough other things about you to deanonymize a postal code into your actual address.
In the case where you do go places, the difference is that you get a weather report for where you are, rather than where you live. When I'm at my girlfriend's house, and I check the weather report, I want to know what the weather's going to be like tomorrow at my girlfriend's house, not at my house. And when I'm at the office and considering where to go for lunch, I want to know whether it's going to be raining at noon in the area of town around my office.
There’s two apps in germany that broadcast warnings of either dangerous weather conditions or other incidents (major fire or similar). I can configure both with a fixed location, but this is really a case where I want the app to geolocate me and warn me about dangers around where I am currently.
We get dangerous ones like tornado sent as part of
Emergency broadcast. Snowfall warnings and thunderstorms warning are sent without geolocation as well.