Context
Depends on the cichlids. Crushed coral is good for raising/stabilizing pH for Rift Lake species. Sand is good for species that like to live on the bottom or forage through it, and also for creating a substrate layer that packs well enough that waste doesn't get trapped in it. Gravel is good for larger species that like fast-moving water, to excavate and those that never touch the bottom of the tank. One can also mix the two to create some interesting effects/conditions though the gravel tends to sink/get covered up if there's too much/a lot of sand.
Am guessing that holey rock is sandstone and basically inert, and therefore of no use beyond it's aesthetic appeal.