I can understand your frustration! It's just typical behavior and I don't think there's anything wrong with it except when it's inappropriate. I can't believe the preschool wasn't willing to work with you more on it! However, I do understand that when one kid does something they kind of "teach" the other kids to do it too and the next thing you know you have a problem.
If I were you, I'd sit your son down and explain that there are certain places he can't pretend to have any guns or "shoot" something he's pretending is a gun. Site school and other public places. Make him repeat back to you those places. Give him all kinds of scenerios and have him answer. You could say "you're playing with your friends at school and one of your friends tries to pretend to shoot you with a gun, what do you do?" or "you're playing at home and you want to pretend to shoot your stuffed animal. Is that OK?" You could make a rule that he can only pretend shoot an object or pretend bad guy AT HOME, never a real person. I find that rule to be effective with little boys.
I do this with my stepdaughter and it works better than just telling her she can't do something. I have to really make sure she gets it, and the only way I can do that is to give her scenerios and have her answer.
Also, you can let him know where it's OK for him to do this (like at home.) Trying to get rid of the behavior all together is absurd. Let him know he will receive a consequence if he doesn't listen.
Next year at age 4 he'll be better able to control himself and better understand that different places have different rules. I think if you continue to work on this over the summer you'll be fine!