One example: in Cincinnati Ohio, working class houses in certain neighborhoods have stained glass windows. It's usually only one or two small ones, but they're there in certain neighborhoods because of a stained glass artisan "scene" that arrived on a wave of German immigrants. Another quirk about Cincinnati: there are lots of houses that are quite narrow for their plan area, because taxes were based on the width of the building on the street. There are quirks like these that cause a city to be a geographically differentiated patchwork of different styles.
I'd still love to try and write a game that included time travel and the results of historical changes on a modern city.
[1] http://www.complexification.net/gallery/machines/substrate/i...
Looks like some parts are missing though.
Roads and rivers are the hard part, placing buildings next to it based on templates is easier.
Two recent articles about his language to randomly generate architecture, and two older ones about city generation:
http://procworld.blogspot.com/2014/11/cantor-city.html
http://procworld.blogspot.com/2014/11/life-without-debugger....
http://procworld.blogspot.com/2011/07/screenshots-of-buildin... - Builds a city over rocky terrain.
http://procworld.blogspot.com/2011/07/city-lots.html
The video in the second one is really cool from a programming and debugging perspective.
[0] http://procworld.blogspot.com
ed: Added more city-generation links.
It would be fun, and even useful, to have a procedural storefront generator. One that constructs storefront styles, signage styles, door styles, and window displays. Use images from a street view program to train a machine learning algorithm as to what various parts of cities look like. Don't just use existing storefront images; build them up in 3D from door, window, sign, and display components.