Bad pattern as in invalid syntax; the pattern failed to compile (or as mentioned 5.3.6 introduced a false return if the offset > strlen of the subject). Pattern logic will only fail if it fails to compile (bad recursion, impossible case scenarios, etc). These are still syntactical failures, but only because the pattern is detected as uncompilable due to logical evaluation issues.
Well, its necessary in the sense that you need to fix a bad pattern. If you don't, it will always return false which if used loosely would give the appearance of no match.