My son was the same way, it's a new skill to learn and he will warm up to it :)
My 3yo is similar. She takes her time to warm up and many times she doesn’t and she stays with me or by herself. Totally fine. We don’t pressure her at all and trust that she’ll get there when she’s ready and in her own way.
There’s absolutely nothing wrong with your son; some children are much “slower to warm” than others and that’s totally normal. If his personality is shy or observant there’s no need to try and change that. You’re doing all the right things by giving him opportunities to socialize. My advice would be to keep it really low pressure- avoid saying things like “go say hi!!!” Or “look go play blocks with him”. Instead replace those phrases with “stay with mama until you’re comfortable. If you feel ready you can go play with that friend over there, if not you can play by yourself! Nothing wrong with that!” Play dates might be helpful for him too like something really low pressure like meeting just one other mom at a park or even at your house and spend most of your time talking to the other mom and just let your son move at his own pace. You got this! Don’t let people make you feel like he’s weird or like something is wrong. All children react to social situations differently.