I had a thought about housing and thought it would be neat if villagers liked/disliked other villagers and tried to stay with those they liked more. It could work like this:
Every villager has values for every other villager that has a meaning to them (liked/disliked/spouse):
- Liked villagers are +10
- Disliked villagers are -7
- Spouse is +50
- Current house is +25 (prevents constant swapping)
- Empty space in a house (after moving) adds value based on the size
- Some houses could add a quality factor
Every now and again, a villager will evaluate all the houses with space as well as the one they're currently in. If they have a spouse, they can also evaluate the houses as well and the values are averaged out (gives large preference to moving into a house with their spouse, but doesn't block regular moving). If another house that has space for them has a higher score, they will move out, meaning villagers will naturally move away from villagers they dislike and towards ones they like, as well as move with their spouse, but will not prevent moving away from their spouse to be with a lot of their friends in a big house.
Additionally, villagers do not have to like other villagers that like them, they could even dislike them. That adds a layer of interest in that villagers could constantly move around trying to avoid other villagers who keep following them, although this could be prevented to keep things relatively stationary.
Another possibility is that the like/dislike status towards another villager could decay from not being near them, or better yet from being around their friends/enemies (who this villager also likes). In essence, it would mean being around their friends means the villager understands why they like him, but being around their enemies means the villager gets to talk with the others how annoying that villager is. The cool thing about this, is that it's all basically flavour-text, and could be whatever you want.
The interesting thing about this is that the 'optimal' house for a particular villager could change over time, as other villagers move around. Every now and again that villager would decide to move to a different house, and then their friends could join then, and maybe some people in there who dislike the new occupants could move out, and so on. Eventually, there might be an equilibrium, but it could just stay a game of musical chairs.