There is a parameter for grazing efficiency (exported through the LNP UI, but that means it's a value is a file). I'd start by checking that value to see if it's somehow screwed up. I know the generic "grass" can somehow appear underground without there being a breach in the roof, but I've heard no indication that it wouldn't provide support for grazers (but isolated single tiles doesn't really matter).
I'm probably stating what you know already, but grazers need vegetation to graze, so if the ground starts to get exposed outside of individual tiles, that's a warning sign. Sometimes animals can cluster in bare areas even though the rest of the pasture is covered by vegetation. If the animals are distracted they have a tendency to abandon the pasture to roam the fortress, and there's not much food grown on bare rock...
If every tile on your pasture is just generic "grass" I would expect something to be wrong somewhere, possibly screwed up RAWs through a tile set or mod (and Loci provided a link to such a problem while I wrote this). Also, pastures tend to have occasional herbs and saplings growing on them (the exception I know if is muddied obsidian casts above surface level shorn away, where various normal grasses grew, but never any saplings or herbs). If those never show up something is wrong.
I'd also double check that the pasture zone is correctly set up to cover the whole intended area, and doesn't just happen to cover a small patch.
You might try an underground fungi covered grazing ground if you've breached the caverns.