I am assuming if I don't want to use the standard terrain generation methods because I would like to have caves and building interiors, I am going to have to construct all of my terrain using a 3d modeling program?
Also, when loading those models in, is there a format I can convert / save the models as so that jME doesn't have to do any conversion on its own?
It would be possible to modify the triangle indices of a TerrainBlock so that it leaves a hole in the ground. Then you could place the mesh of the cave so that its entrance matches the hole.
You can use vertex color/ texture blending to put alpha where you want your cave to be, then the terrain would be invisible in that area.