For a few apps, I've used census data to derive city and state from zip code.
It seemed like a disruptive flow to me too, until I asked for zip without showing any other address fields. On change, the address and prepopulated city and state fields slid down above it and address got focus.