Why is $LINK needed?

To put it short, Chainlink requires $LINK on its VRF.
The revealing process is powered by VRF, and it needs $LINK to provide the on-chain randomness. That $LINK is added to the contract subscription balance at the VRF Coordinator contract. At the revealing moment, we request a $LINK value, based on this calculation:
((Gas price * (Verification gas + Callback gas)))/ (ETH/LINK) + Chainlink Charge = Total gas cost
See more about this calculation
The $LINK required to reveal depends on the ETH/LINK ratio, which can change over time, although it is very stable. The value of LINK is also provided by Chainlink's Data Feeds, so everything used to provide relevant data and randomness exists on-chain.
The calculation is required by Chainlink to cover all the costs up to the value obtained through the equation above.