I'm a firm believer that it's not a requirement for people to enjoy the thing they do for work so much that they want to do it in their spare time. Do people who frame houses build frames for fun off the clock? Do garbagemen go around the neighborhood emptying cans just for the hell of it? No, and no one thinks that's weird.
If he's doing well in his classes, he's probably just fine. I didn't start programming on the side until well after I started my actual career. To me in college, it would have been like doing math in my spare time - programming was homework, not something I did for fun.
One other comment I'll make is that when I was in school I did not yet have the skills I'd have needed to build satisfying side projects. I was learning the basics of syntax and logic, wrapping my head around the concepts behind coding. It wasn't until I was further along in my career that I had enough experience to actually build anything I wanted to build. I found my mid-level programming classes pretty difficult too, and definitely wasn't interested in further "punishment" in my free time!
tl;dr - I don't think you have anything to worry about. If your son is doing well in his classes, that's good. Let him enjoy his hobbies and social life.