The Crusher feat reads (TCoE, p. 79):
Once per turn, when you hit a creature with an attack that deals bludgeoning damage, you can move it 5 feet to an unoccupied space, provided the target is no more than one size larger than you.
Let's break that down.
- [Y]ou can move it 5 feet: So the target has to be 5 feet from the cliff.
- ...to an unoccupied space: So, there can't be anything flying in the space.
- ...provided the target is no more than one size larger than you: If the creature isn't more than one size larger than you.
The DM has final say, and some DM's are more forgiving with things like this than others. Note, you built the map, so you gave them the cliff and you approved of them taking the feat (because feats are an optional rule).
Some DMs might give a target pushed off a cliff, as a reaction, the chance to "catch the ledge" with a Dex save. It isn't RAW, but it isn't unheard of either. It is important that when I've seen this done, it is applied equally -- given to both players and monsters. You see Matt Mercer do this at times on Critical Role. I am also inclined to do the same for players but not monsters, as I set the terrain if I created a cliff I expect the players to try to use it to their advantage.
Does "empty air does not equate to an unoccupied space"?
The rules for spellcasting make it clear that areas of effect and movement includes vertical space. Monsters and players can fly in the game given spells or wings. So those spaces in midair can either be occupied or not. A space is occupied if it has a creature or object preventing movement through the space. You can indeed shove or push a creature over the edge of cliff with forced movement.