Question: what is the difference between on christmas and at christmas?
Answer: The "on" refers to the "day" part. It's like saying "on Sunday". Conversely, you can't say "at Christmas day" or "at Sunday". But, as you say, if you refer to the holiday as a whole (which is actually an indeterminate period) you say "at".