Who typically pays for the gas fees in a common airdrop contract?

Let's say I have a typical contract that creates a token and airdrops it to a list of accounts. How is this typically done? Is it up to the contract to be deployed with enough gas to cover the cost of each transfer in the list of airdropped accounts or is it up to each account in the list to cover this cost when each one signs the txn to claim their reward?

Airdrops nowadays work based on a "pull model" where users have to call a function to claim their airdrop, at that moment they will themselves pay the gas for the transfer.