The splitArea() function is only available starting with 2016.0, but I would recommend upgrading to the latest, which is currently 2016.1.
With the splitArea() function, you can split a shape by percentage area.
splitArea Operation
For example, this split divides the area of the current geometry into 33% green space, 27% open space, and 40% building space:
splitArea(x) { '0.33: GreenSpace | '0.27: OpenSpace | ~1: BuildingSpace }
You can also split the current geometry according to an absolute area. For example, this split divides the area of the current geometry into one piece that has exactly 3000 sqm and one piece that has the remaining area.
splitArea(x) { 3000: BuildingSpace | ~1: OtherSpace }
Note that splitArea (and split) only splits the geometry in one direction. If you want to split in two directions (e.g. x and z), you'll have to do nested splits (as you figured out).
The reason why the percentages in the code you wrote don't work the way you expected is because the percentage syntax has a different meaning. It means that the rule will choose one of the cases with some probability, and that probability is defined by the percentage. So, if the rule is executed 100 times, it will choose to create ExtrudeBuilding approximately 35 times, and it will choose to create OpenSpace approximately 27 times.
Stochastic Rule