Had to post in response to this. My DS was very much like this at the age of 3. He is very sensitive and impulsive and from the age of 2 was pushing other children - sometimes for absolutely no reason whatsover. We went through agonies about it, and got (and even still sometimes get) comments like 'Have you tried the naughty step?' - of COURSE we've bloody tried it but the behaviour repeated itself again and again whatever we did.
What worked best in the end, on advice from his preschool, was to get him to verbalise what it was he was trying to express. So go down to his level, ask why he did that, and explain what he should have done instead (eg go and ask mummy to help you, take turns, etc). Took a long time but it did have an impact - and worked better than harsh punishment / confrontation, which just escalated the situation. We also tried to make 'time out', when we did need to use it, a time of quiet and reflection, not a punishment.
At 4.5, he is also now starting to grow out of it, though we still have the odd incident, especially round his little brother.
I totally feel for you. Some kids just are born with a temperament like this and the things that work for other people just don't work with them. It's hard when others are judgemental.
I don't know about your son but mine has compensating factors as well - bundles of energy and charm - which I try very hard to remind myself when he's playing up for the 25th time that morning :-)