Fail early in a script
Stopping at the first failure is the default you want in a script. Setting that behaviour at the top, or checking after each risky step, is what prevents a script from finishing successfully having done nothing.
Non-zero is not always bad
grep returns non-zero when nothing matches, which is a normal answer rather than an error. Treating every non-zero as failure turns a legitimate empty result into a crash.