My DS2 (5.5) can be a bit like this - he still struggles with sharing unfortunately though he is getting better. He is a bit behind on all social skills - he is probably closer to an average 3-4 year old socially. Luckily we are in another country so he doesn't go to school yet. I think that the root of it for him is that he does not really understand other people's behaviour, it is not predictable for him and that makes him anxious.
He also has a 2.5yo brother (DS3). Basically we operate on a policy of no, you can't just go up and demand something off your sibling, if he is playing with it first, then you can ask. But 5 is also not allowed to violently/roughly defend things either. He can say "Hey, that's mine, I don't want to share", he can offer to swap for something else or he can ask an adult for help. But most often when 2 comes and is interested in 5's stuff I try to remind 5 "I think 2 is really interested and wants to play. Can you find him a train to play with?" (or similar). This is really paying off and they will now frequently do this between themselves. We also had a policy from when DS3 was first born that if DS2 wants to do something without DS3 interfering we can find him an area that DS3 can't get to and he can play with his toy there. If he chooses to play with it in an open area, then DS3 has open access to it as well so he can't really get mad if DS3 wants to join in.
However, this is a bit harder and less necessary now the youngest is a bit older, and also 5 has fairly low frustration tolerance and can get a bit anxious about 2 getting too involved in something he is also playing with. For this we do a bit of setting up for success/controlling the environment in that if I think it's just going to be a disaster, 5 is in a particularly grumpy mood, is tired or his construction is extra fragile then I'll probably say to 2 "Let's make our own train track over here instead" and build him his own.
At other times I will sit close to 5 and just sort of be his impulse control a bit for him because this is the part he struggles with. So when DS3 is doing something that could be troublesome I say in a soothing voice "Let's just wait - I know you will use those pieces soon, but we don't need them yet do we? DS3 will probably put them down soon. Don't worry. Let's focus on this bit for now and see how we go." Or if he doesn't like what DS3 is doing but it doesn't actually impact him at all, then again I do some body contact to sort of ground him back to the moment and say "Let's wait and see what he does". DS3 is actually quite good at not wanting to borrow the bit we are literally building right now, though will sometimes go and rearrange a bit we have already built.
It's mainly about waiting. Because I can see that DS2 is looking at DS3 and instantly jumping to "Nooooooooo he's going to wreck the train track!!!" and so his instinct is to get up and snatch the toys back or push DS3 or just however he can make DS3 go away. The problem is that what actually happens in this scenario is that DS3 will get angry back and promptly hit him over the head with a train or more recently he will just turn around, grab any part of the train track and yeet it merrily into the air like an angel of chaos, which literally does wreck all of it and will then cause DS2 to fully go into attack mode. So we want to avoid this. But I find that if we get cross with DS2 and tell him off or punish him for snatching things off/hurting DS3, this doesn't actually do anything about his anxiety/fear that DS3 is going to wreck the train track (which, when he was younger was usually him accidentally sitting on/crawling on a bridge or something).
What does help with this fear/anxiety is building in lots and lots and lots of positive experiences of playing with the train track with DS3, and especially experiences where he is starting to feel anxious because he thinks DS3 is about to wreck something and I can catch him in time and help him to see no, look, DS3 is actually just driving the train. He's not doing anything wrong. Nothing bad is happening. Other people can act in unpredictable ways, and that can really be okay. It can even be fun. I think that building as many of those positive experiences for him is much much much more productive than getting cross or talking about how the bad behaviour hurts DS3.
For bigger toys that can't be shared in the same way as a train track, like a bike, they do have their own and they are supposed to ask if they want to borrow the other's and they are allowed to say no. This doesn't really come up for us with a bike because the 5yo's bike is much too big for the 2yo. It's more likely to be that DS3 will have a toy that DS2 wants and rather than wait for a turn, he will just go and snatch it off him, or DS2 has a toy DS3 wants and he is standing there asking nicely for it for ages and DS2 is just hoarding it unfairly.
So then I'll usually step in again and it used to be that I would give DS3 the toy and then bring DS2 to my lap "just to calm down and have a talk" (he is at this point writhing all over the place) but one day I hit on the idea to just look at the time and say "Let's just wait together for ten minutes. We can let DS3 have a turn for ten minutes." Currently, there is a 100% success rate of DS3 losing interest in the toy and abandoning it before the 10 minutes is up. And again, the more positive experiences DS2 has of just waiting with me for ten minutes and the fact that DS3 fairly often just gets bored of the toy and has enough of it by then, helps him to trust that waiting is not forever, that the toy isn't gone forever, that he CAN wait even though he really really really REALLY wants the thing. This then helps him (on a very good day) actually wait for himself. More often than not he needs help with waiting, or reminding that DS3 is only going to use the toy for a short amount of time. But slowly he is getting the idea that he doesn't have to hoard the toy in case DS3 runs off with it, because he really won't run off with it forever.
We are not currently doing rewards, because I think DS2 would fixate on the reward whereas it's about building him positive experiences/associations with the action itself, and so I think I would probably need to craft a reward system quite carefully (but if it's working for you then keep going! I think people - me included - can really overthink parenting methods and 100% if something is working for you and not having any unexpected downsides then keep going with it).
I'm trying to do a targeted praise thing for now so I've basically made a list of things for DH and I to notice and then we try to give specific praise when we see these actions - it is sometimes easier to notice the bad things, so making the list helps you get your brain into "quick - they're playing together and nobody is screaming, what can I notice??"
When they help each other
When they offer a toy to each other, or let each other have a turn.
When they use problem solving
When they are calm/kind/accept when the other says no
When they find their own thing to do instead of badgering the other
The plus side of doing all this is that the 2.5yo has beautiful manners and is very social - it comes more easily to him - so hopefully he won't have the same struggles (I'm sure he will have his own, though!)