There is no real reason to not build your "town" underground.
It is the most efficient, and effective way at keeping all the NPCs safe.
There is no real reason to not just stick all the NPCs in the smallest cubicles required, and then use tricks to lock them in, such as putting a block of dirt in the way of the door etc.
There is no reason to make your town, buildings, etc... out of any material over another. Dirt, stone, marble...the only difference is cosmetic.
There is no reason, (other than possible logistical proximity to regional specific resources) to build your "home" or "town" in any one biome over another.