The problem with caves is that Unity's terrain engine, as MaxOfS2D mentioned, does not support caves at all.
In order to implement caves, you need a radically different terrain engine, usually this means a voxel terrain (I believe Crysis has voxel terrain, that's why you can dig caves into the terrain).
The idea behind a voxel terrain is that it is represented as a 3D volumetric grid of values - think Minecraft. Just as in Minecraft, you can easily have caves, overhangs, and whatever else. The main difference from Minecraft is in the way this is converted to a mesh - the most common way to do this is via Marching Cubes algorithm to produce a smooth mesh.
There are some problems with this approach as compared to the current system. Currently, Unity uses just a raw heightmap. This is fairly RAM-friendly, but doesn't support overhangs. A volumetric grid, on the other hand, requires a fair bit of RAM - to the extent that you wouldn't want the whole world loaded all at once. This means you have to separate your terrain into chunks and load/unload these, and your infrastructure begins to dramatically climb in complexity.
Alternatively, you can do what Far Cry 3 did and just cut holes in the terrain, and then make the cave out of models.