Making an answer from my comments, because I'm ending up more long winded than I expected.
Riffing on your Civilization thought, consider that you build one theatre or one supermarket and that's "enough" for the city whether it has 3 or 30 citizens in it. Whether your goal is to get a reasonable looking visual proxy or to require a reasonable amount of building management for a player to grow their city controls what type of abstraction will work for you.
You ask for a 'best' approach: well, "it depends" :-)
I think you might provide even more context over what your game is like. For example, Sim City does require you to build a police station for X many citizens or crime skyrockets. But the scope of Sim City is smaller than Civilization, so it works with that granular level of micromanagement.
Consider answering at least
- What is the overall objective of the game?
- What type of gameplay are you wanting? Tactical? Strategy? Simulation? Real-time or turn-based?
- What is the scope of the game? How many cities/regions do you expect a player to control?
These should get you a rough guideline of what to start with, but ultimately, you'll probably have to tweak the micromanagment characteristics of the game based on what feels right (requires effort and though, but is still fun without bogging you down).
So for example, you have listed USA as a region at ~317 million population. Say you decide this is a reasonable halfway point for the scope of your game, so you want people to be controlling twice this amount of people & resources at the end of the game. So you set your target at ~750 million population. Now you decide you want your game to last for ~5 hours under typical circumstances and you decide that if a user has to manage their housing more frequently than once every 15 minutes, they'll get bored with that mechanic. That gives you a guideline for ~20 houses (skyrises, neighborhoods etc.) = ~750 million people, or around 37.5 million capacity for each (house building) they build.
You mention not wanting to immediately grant citizens to fill these buildings. That means you will have to decouple your growth calculation from your infrastructure building. I would suggest you have separate resources be consumed for each (e.g. it takes wood+workers+time to build houses and food+time+happiness to fill them with people).
It sounds like you want to impose a 2-tier cap on the population for a region: population will grow until the minimum of either the built infrastructure total or the region total is built. A region population max cannot be increased, but you can built more infrastructure up to (or even over) the region cap. Or, you could make this abstraction work by only allowing a given region to have y number of housing buildings built in it.
Also, a citizen Civ is a flexible thing. A Pop1 city might have ~100 citizens, a Pop2 500, Pop3 is 2,000 etc. until Pop30 is ~50 million. You can usually see the 'real' number on the city management screen somewhere, as well as your nation's overall population. This neatly encapsulates the exponential growth of populations.
If it seems weird to you to have the first building immediately support millions of people (for instance, you have the game start in prehistory), then an exponential scale could be right for you. Or you could take a different approach with upgrade-able buildings. The Ceasar video game series had housing that started out at low level and would automatically upgrade if you provide it with certain resources (like food, water and goods). Alternatively, you could use a resource-spend model where upgrading the buildings make them exponentially bigger and better, but each upgrade costs progressively more resources.
This obviously isn't a direct answer to your question, but hopefully you'll find some inspiration from my ideas.
P.S. It sounds like a fun game! Good luck!