I think the courts have ruled that certain types of speech can be restricted in schools if that form of speech is an impediment to the learning procees for other students. Sory of a modified you can't yell fire in the movie house sort of thing. I think this would certainly apply here.
Great point. The school wasn't aware of the shirt until the assault occured. They couldn't have stopped him from entering the school because he hid it under another shirt until he was inside.
I strongly agree that schools should prohibit anything offensive. Kids are too young to know that what they say and do impacts others. Giving them the autonomy to wear whatever they want is asking for trouble.
I still don't think the kid should have been punched.