According to Writing Secure Code:
you should not trust data until the data is validated. Failure to do so will render your application vulnerable. Or, put another way: all input is evil until proven otherwise. That’s rule number one.
The Zion rebels are hackers or rogue users that the machines try to stop using the Agents. Why allow them to bring in weapons from the construct into the Matrix? In other words, the rogue users input (guns) are evil until proven otherwise. Can't the machines write code that will validate what is being brought in and remove any unwanted items?
In the matrix world, they could even prohibit guns from being constructed or used, so even bluepills can't make them. The only entities that would have them are the Agents.