I think system programmers are supposed to come under a more strict standard, simply because they are system programmers. There are programmers, and there are system programmers.
I'm not saying that people should be sacked for just one mistake, unless it is a pretty large one (criminal e.g.). But I'd say system programmers should be allowed to make the same mistake three times maximum. I think that's pretty generous. If the culture does not allow enough time for reflection and education, then that's a different story.
The other programmers do not need to hold the same standards simply because their code (presumably) impact less.