The idea of the implementation of regions was to make it a very lightweight feature: one that required minimal coding effort, as my time is very limited, and one that requires minimal memory usage/bandwidth, as both of these things are also performance critical on larger maps. The idea of using basic squares is to allow regions to be stored as two co-ordinates per region, involving minimal memory usage. A more sophisticated system would entail storing region data on tiles, which would involve an unreasonably high degree of memory usage, or would involve a very complex algorithm using multiple co-ordinates (which would give a region made up of multiple intersecting squares) which would only look slightly better than the current one square per region system and would take a very large amount of time and effort to program and debug.
However, an option to ignore regions in the same way as climates when manually placing buildings, and an option to use only region 0, would be relatively easy to implement and would consume excessive computational resources, although my own extremely large backlog of higher priority tasks means that this is not a high priority for me at present.