The name "wave function collapse" is such a overcomplicated academic term.
In reality this algorith is very simple:
1) try to randomly place a part at X if it fits
2) try to pick the random part in such a way that once it will be placed we will maximize that probability that we will be able to build further on (so you just pick the part that reduces the chance of blocking the build in the next step in case nothing can fit anymore).
Then you just have to provide all combination of possible connection in terms of 2d/3d graphics.
"Everything should be made as simple as possible, but no simpler." I think your version would run into dead ends very soon. You need to keep track for all grid positions what are remaining possible blocks (this is 'superposition') and eliminate them as you place blocks ('collapsing'). You also need a good strategy in which order to place blocks, and also how to backtrack if you run out of options.
The Townscaper seems to be using non-rectangular grid, so it's maybe more like a 2D graph of distributed nodes, with perhaps Voronoi algorithm to assign 2D geometry to each node. You make it sound trivial, it's a lot of work to make it work (and probably quite a few discarded prototypes along the way).
As someone who did a PhD in particle physics, this is very hard to understand (and not just apply math)
This is actually just one of the interpretations, there are more and some are gaining traction (see for instance https://youtu.be/5hVmeOCJjOU, S Caroll is a great speaker but you need to stay concentrated :)
In reality this algorith is very simple:
1) try to randomly place a part at X if it fits
2) try to pick the random part in such a way that once it will be placed we will maximize that probability that we will be able to build further on (so you just pick the part that reduces the chance of blocking the build in the next step in case nothing can fit anymore).
Then you just have to provide all combination of possible connection in terms of 2d/3d graphics.