Zero tolerance policies for anything are idiotic. They give power to accusers and those who administer punishments while taking away power from everyone else. They make accusations an all-or-nothing thing. Too many kids are going to get away with small infractions because there are no reasonable punishments for them.
It is our instinct to try to make sure that people get justice because it slakes our anger. But when we treat all infractions as being the same, or even if we punish all infractions very harshly, it not only takes away mercy and moderation but it also is a miscarriage of justice even for the victims. The person whose child was stabbed by a sadistic gang member is actually insulted and demeaned by seeing a kid who brought marijuana to school to manage his anxiety be punished even in a remotely similar way.
Justice has to be properly calibrated. Zero tolerance policies are like removing gears from a car: Inherently pointless.