The social scene outside of school is so different from what it is in school, there's a whole long list of things which I thought were better for my kids about being home ed.
School isn't set up to promote either socialising (enjoying being with other people) or socialisation (learning positive social skills), and IMO school doesn't actually do either of those things particularly well.
For example, at school kids don't have long uninterrupted playtimes in a variety of settings with access to stuff. That means, for example, there isn't time to plan and carry out a project collaboratively: building a den or a Minecraft world, exploring the neighbourhood on bikes, training pets, forming a band, creating a film, making and selling things. You described your son's classroom as being like a zoo, so I expect the lunchroom and outdoor play areas are at least as bad, with noise and interruption. Zoos are exciting and sometimes people like being in them, but it's tiring to spend every day in one, and stress doesn't help build good relationships.
Kids in crowds at school socialise in the public spotlight, and live in fear of ostracism if they don't conform. I'm sure you remember it: you were talking to that boy - is he your boyfriend? why on earth are you playing with little kids? what ARE you wearing? why are you sitting with that geeky new girl? how can you be friends with him after what he said about me? are you going to let me play too or should I tell them you still wet the bed? don't you know dolls are for babies? Even when these things aren't said aloud, you know how you're expected to behave. If you can't be yourself because people around are judging you, it's hard to have deep friendships or be kind to others. I know I was able to be a better person outside of school, in smaller groups, than in school with a huge peer group always looking on.
Schools put kids together who are exactly the same age. Playing with age peers can be fun, but it's restrictive if they can't also hang out with adults and kids who are younger and older. Having access to people of different ages is healthier and teaches different skills. Here's one of a series of good articles from a psychologist about that: www.psychologytoday.com/us/blog/freedom-learn/200809/why-we-should-stop-segregating-children-age-part-ii
All relationships have their challenges. Kids need time and space to work through problems - which can be hard if they are forced together every day - and may occasionally need some coaching from a person who knows them well and can observe what's going on. It would be great if teachers could do that, but sadly with dozens of kids to look after and all sorts of other things to do, a teacher can't make it a priority to help kids through their friendship problems.
So my eldest really enjoyed being able to be with people of all ages in groups of various sizes. Especially through their teens, they could take on leadership roles among kids and sometimes even among adults, as well as being a follower, a learner, a teacher, an onlooker. Different people in different settings meant different ways of behaving. Now at uni, they are particularly good at working in groups because of that experience.
My 14yo has a learning disability and often prefers the company of younger children aged 10-11 with whom she has more in common than other teens. She isn't constantly comparing herself with kids who can do things she finds hard. So she's happy. Her self esteem is high. She lights up when she helps a seven year old boy who idolises her. She knows other people can read and write better than she can, but because she isn't doing reading alongside them for hours a day, that inability doesn't define her as it might at school. It's a minor point.
The downside was that when they were young I had to ferry them round to friends and parks and groups rather than just dropping them at school to be with other kids, but with that came great flexibility to meet their social needs properly. As they grew up they could get themselves off to see friends under their own steam.