The problems that need solving are:
1. How do you make city spam a non-issue by making the game viable for players with just a few cities?
2. How do you stop micromanagement (deleting etc to make space)?
3. How do you make city specialisation a strategic element of the game?
4. How do you stop city sprawl on the world map?
I like the idea of 'free' housing that can be built but I can see that city spam (point 1 above) will become a big problem with this model. It does help with points 2 and 3 above, but fails again on point 4. So it is not an ideal solution.
Here is a possible solution:
Make city populations 'abstracted' rather than 'constructed'.
Civilisations have an overall Population Growth Factor based on global parameters such as number of cities, sovereign traits, at war, army size, merchant income, etc.
The fewer the cities the player controls the higher the Population Growth Factor. This way players who spam cities have slower population growth within those cities than players who concentrate on a handful of cities. Would also mean that players who lose cities would get a population growth boost to their remaining cities (refugees).
Cities also have their own Population Growth modifiers that are applied along with the global factor. Combined these give each city a unique prestige score which in turn gives an indication of population growth.
Pops are attracted to cities that have a high prestige and are not drawn to cities with low prestige.
All buildings add or subtract to the prestige of a city. Inns etc boost the prestige (and pop growth) but workshops for example may detract from the pop growth. Subsequent buildings of the same type would not affect the pop growth modifier to the same degree. Eg: Using a simple halving rule, 1 Inn boosts prestige by 10, 2 Inns boosts the prestige by 15, 3 Inns boost the prestige by 17.5 etc.
Cities that have been attacked and especially changed hands receive a massive hit to their prestige that slowly creeps back over time. Buildings that are not of your alignment could also negatively impact your prestige if they are left in cities.
Housing is built automatically by the pops as they require it and they build into any vacant tile.
Housing tiles are scaled to look small and can be built over the top - the game will then build new housing to replace any that needs replacing. Doesn't cost anything.
As cities rise in level there could be other levels of housing and a certain number of the housing tiles would show a visual upgrade. These can be used to show higher population factors so city sprawl is reduced.
Visually then each city would clearly show the special buildings while the smaller housing tiles would automatically grow around the edges or in gaps.
City walls ignore housing and are built around the special buildings.
Housing is no longer a selectable part of a city. If you enter or leave a city it is where the wall finishes (like the current game).
Housing ends up becoming a visual queue on the map to represent the population of the city but isn't controlled by the player.
Looking at the points above:
1. Does it solve city spam?
Yes. If you build more cities your population growth factor drops. If you conquer cities the new cities take even longer to recover.
2. Does it stop micromanagement (deleting etc to make space)?
Yes. Population for each city becomes a factor. The player can still strategically build the city to have high growth but it also works largely automatically.
3. Does it make city specialisation a strategic element of the game?
Yes. And by having housing like other terrain tiles, it highlights the other important buildings inside the city making it easier to see what is what.
4. Does it stop city sprawl on the world map?
Yes. Housing is now a growth of tiles around the edges of cities so players can only sprawl in a certain direction by using the specialisation buildings.