First, while I have no experience in making a mod for Forge, I have modded* the base class files, but this means you have to either modify the jar directly or include them as a library, the latter of which I did for my game, using the method described here (Forge still needs -Dfml.ignorePatchDiscrepancies=true).
This is a crude hack though, and while I don't really care myself, if I were to make a mod that replaced the cave generation in 1.7 with the old generation others would want to be able to just drop it into the mods folder. I could even add a configuration file so you could change the size/density and frequency of cave systems (basically the suggestion I proposed here, perhaps just a config file if adding new options is difficult); some people might just want no caves, rare massive caves, etc.
Now, looking in the ChunkProviderGenerate file, I find the following code which suggests ("getModdedMapGen") that Forge enables you to use a custom cave generator (several more lines for ravines/villages/strongholds/etc), but I haven't been able to find anything on how to do so:
Of course, a non-Forge mod (just for old generation) can be done with just JBE since all I have to do is change a couple numbers and it is easy to find the class file even without MCP (decompile with JAD, use grep to find a string used in MapGenCaves, as long as they don't change it too much); I did this in the snapshots. Again, I have no experience with making a mod for Forge so perhaps I could just do this unless somebody can give me a template to work on (the basic Forge stuff and just put my stuff into it). The config file would look like the following:
#Default generation for 1.6.x and earlier is 40, 15 and 50 respectively; density is maximum size of cave systems and frequency is 1/x chance per chunk
The code would then just have (plus whatever is done to read the file):
int i1 = this.rand.nextInt(this.rand.nextInt(this.rand.nextInt(caveDensity) + 1) + 1);
if (this.rand.nextInt(caveFrequency) != 0) i1 = 0;
if (this.rand.nextInt(ravineFrequency) == 0)
NB: It would be impossible to completely disable ravines (but make them like a 1/10000 chance per chunk) but caves can be disabled by using 0 or 1 for density, with sanity checks added for negative/extreme values.
*I almost completely altered the generation of caves and ravines; most people probably wouldn't want it though since it produces insane cave systems, 200+ block long ravines which loop around on themselves, etc; this map gives you an idea of what I did; for scale, the "supercolossal" cave system at the top is about 500 blocks wide, just to the SW is a massive "ravine", which also vary in size/curvature/etc)