So you have 16 nights, which is great, but three stops will eat that time up quickly.
There is plenty of skiing near Zurich. I don’t ski but Google shows many resources for finding resorts near there. Not sure if you would entertain staying at a resort or what you have in mind. You might prefer Lucerne as a base if you can find skiing there. Google is your friend here, too. Maybe have your son do some looking? Lucerne has lots to do for everyone. It would be easy to spend 4 nights there, 15th-19th.
Transfer to Venice is a long day, > 6 hours by train from Zurich or Lucerne, so prepare for that. Again, 4 nights is a nice visit in Venice, 19th-23rd.
That puts you transferring to Rome on the 23rd, which is good because you have to be strategic about Christmas Eve and Day. (You could spend the 24th doing the transfer if you like, spending 5 nights in Venice.) You will need dinner reservations on the 24th as well as lunch and dinner on the 25th as all are lively times in Roman restaurants. There are things to do in Rome but it is pretty quiet from noon on the 24th all the way through the 25th. Public transport runs on a holiday schedule but there are taxis working. Mostly people take long walks through the city on Christmas Day and there is a creche/nativity museum that has been open at Christmas when we were there.
So I’d recommend spending the balance of your time in Rome as there is plenty to do and the days are short. We spent 9 nights there at Christmas in 2011 (before we lived in Rome) and thoroughly enjoyed it. We did have an apartment which is nice for long stays.
Many restaurants do reservations online or at least via email now, but do jump on that for the 24th and 25th by October. We saw many visitors without reservations turned away when we dined out on holidays.