The language you use about him is so critical, though, that I wonder whether he really does feel that you see the good things about him - I know you say you tell him those, but it sounds like you've got such harsh ideas about him that it might be coming across anyway. And that can make it harder for a child to change, because they feel like there is something wrong with who they naturally are. I had some traits as a child that my Mum didn't like, and was very much pushed into trying to change them - but it didn't help, or even made me feel worse about myself and more misunderstood. I had to come to the realisations myself about what I wanted to change, and what was just my personality and could be accepted. It would have helped a lot more if i felt loved unconditionally. So even the fact that you talk about him as being 'uptight' - you don't have to use such a loaded, negative word about him or his whole personality, but instead, could be focus on certain behaviours that are a bit rigid. It makes it sound a lot more changeable, and focuses on a core part of him that is still worthy, somehow, with external traits that are changeable if he wants. Words like 'pandering' and so on are also extremely pejorative, and even when you don't use them in front of him, might mean that your real feelings are showing through and he will pick up on that.
There are things he can do to change - reading books about friendships, encouraging him to role play, maybe working with a counsellor or someone external to you, so that it's not always you telling him to change, which can be so damaging to a child - you can then be 'on his side', accepting him for who he is, but supporting his efforts to work on things. If he thinks that his personality is just who he is, which of course many children do, then having a parent who doesn't accept them is so hard. It just feels like there is nowhere you can be yourself, because who you are naturally just isn't acceptable, and that is such a hard message for children (and such a hard message to let go of later in life). I was a bit of a negative child, prone to over thinking, and constantly being told to be positive, smile, be resilient, etc just made me feel like who I was was wrong. It took years to accept that I was fine and valuable regardless, and that I could then make choices in how I saw the world, how I presented things to other people etc, but that having a negative mindset originally doesn't actually make me a bad person. In fact it is much much easier to choose changes, when you feel accepted and understood.
So maybe working a bit on yourself as well, to see him differently and make sure that he knows that, so that it becomes a problem set of behaviours that you can work on together to help him keep more friends, if that's what he wants. Doesn't mean you have to accept the behaviours, but I suspect there is a lot of messages coming across to him that you don't accept him (even if that is not at all what you intend).