From my experience... SurfaceSpread and MoGraph can hardly handle really big scenes. Yes, in theory you can shoot a ton of instanced stuff at them and after a few days you'll get your render but on any kind of production job that is impossible to work with.
I have, in practice, used MoGraph the most. I don't often do large scale projects but I do exteriors yeah - think houses with backyards with a small view over to the neighbours. In that case MoGraph is OK. It takes like 30 seconds to calculate all the grass but its workable.
SurfaceSpread to me performs a little worse than MoGraph. It has A LOT of useful features but the preparation times are higher than MoGraph.
So, the only thing I heard of that works with insane amounts of grass is Carbon Scatter - with all its limitation it appears to be quite useful in those cases. I heard people can pulloff some really nice amounts of clones with short preparation times.
I try to help myself sometimes by doing large patches of grass so that there is a lesser amount of clones to scatter. To me the biggest problems are the preparation times before the render stars and secondly, the super slow viewport.
To get around the second one I normally unhide, disable MoGraph / SurfaceSpread when I am doing something else than grass. You also need to have it set to not be visible in the viewport otherwise you are in for some painful times :)
Also, it helps doing on thing at a time while working on the scene :)