It could easily be a fraud management policy. Card not present transactions are more likely to be tapped for fraudulent use.
Card not present transactions also often carry a higher interchange fee, so the hotel might not have wanted to pay that higher cost.