Although the detail hint brush feature of GenSurf will reduce the brush fragmentation of a single surface, you will still need to take precautions at the intersections of surfaces (e.g. a ground surface and a cliff wall) to prevent excessive brush cuts. The best (lowest) polygon counts can be achieved if at least one of the surfaces has a linear border, i.e. the edge of the surface follows a horizontal or vertical line. Shown below are two examples:
In this example, the ground surface uses the "Linear Borders" feature of GenSurf. The cliff wall, however, does not. Also notice that the detail hint brushes of one surface do not intersect the brushes of the other surface... this is a good thingTM. In this map an additional cube brush has been added along the border of the ground surface. This brush has the same texture and properties as the ground surface.
Alternatively, you can use a cliff wall whose base is a straight line, and allow the ground surface to undulate along the border, as shown above. An additional cube brush has been added at the base of the cliff wall with the same texture used in the cliff. Notice in this case that hint brushes for the ground surface along the border have been shortened so that they don't intersect the cliff brushes, but do still enclose the ground brushes.
There's an obvious visual tradeoff involved here... it's rare to find a natural setting where a straight line is apparent. Before dismissing these methods entirely, give it a try in a small test map and see how it looks. You can often disguise this feature by, among other things, placing a water brush here. Phong shading with ArghRad 2 will also make the linearity less obvious. If you can't accept the linearity, you're basically left with two options: 1) A lot of vertex manipulation, or 2) overlapping surfaces. Both of these methods will have at least somewhat higher r_speeds than the previous methods mentioned. Using vertex manipulation to close up gaps between surfaces will definitely give lower r_speeds than overlapping everything, but it requires a great deal of tedious work in your editor that can easily lead to illegal brushes if you make a mistake. I've had the best results by pulling the ground surface brushes in/out (keeping the elevations the same) to meet the corresponding vertices of a cliff, and pulling the cliff vertices up/down to meet the ground. You'll also need to perform this operation on the hint brushes that bound each grid square, or you'll definitely get a lot of unnecessary brush fragmentation. The screenshot below shows a plan view of a ground surface and an elevation view of a cliff wall that this operation has been performed on.
Of course the easiest way to avoid intersecting surface problems is... don't use intersecting surfaces. If you're willing to do without overhanging cliffs, and one texture (rather than 2) will do nicely, you can construct an entire area from one surface, as shown here: