In my rmg zones are generated in similar way to the homm3 algorithem , It uses something called voronoi diagram , At first stage a constant number of points are set randomly and divide the map area :
Pic Sample
From that starting point an algorithem that tries to put adjacent zones (based on connection definition) closer to each other and the 2 starting zones as far away as possible from each other.
Basically it picks the 2 farest zones and tries to fit them into the zone size ,If the zone is bigger then the zone size spacified in the template it needs to be shrinked ,there for another point will be added , spliting the zone , if its small then it adds a random adjacent zone .
Pic Sample
the next step adding a new point :
Pic Sample
After this proccess is completed for all zones the final shape is achieved and map making proccess continues..