I don't think he is deliberately trying to hurt anyone's feelings, nor do I think he is trying to make himself appear "better" at whatever it is. I think this is just a natural commentary as he is aware of these things. He's just making observations! Totally normal and age appropriate.
You have to teach him how to make these observations without making others feel badly, though. And that takes time, and yes, some maturation. He may very well understand (when you point it out to him), but he isn't thinking in that way when he makes his observation. He is just saying what he notices in the moment.
It might be more helpful if you address when it IS appropriate to make such observations out loud and sort of re-direct whom he shares those observations with (you).
"It is really cool to notice all the differences in people, isn't it? Some are bigger/taller/faster/slower/heavier/greener (or whatever)! But when you say it out loud TO the person, it can sometimes make them feel bad about the difference. What if you just wait to share what you've noticed and tell ME all about it when it's just you and me? okay?"
It might be a while before he is able to recognize (before speaking) which things are not appropriate to say to spare someone's feelings. In fact, some ADULTS have never figured it out and have no filter. But your kiddo is not even 4. So if he can just wait to talk to you about his observations, then he will avoid accidentally hurting feelings. AND, you can discuss with him how whatever he has noticed might affect how someone feels (both good and bad).
Be patient, and encourage him. He'll get it.
(making himself look "better" comes as he gets a little older... but I don't think he's there yet, at just 3 1/2. When he is 6, if he is still doing it, THEN he is trying to be impressive.)