My guess is that someone decided that would be something nice to optimize and completely forgot (or ignored) the hyperspec. It's very easy to think that the way AND behaves makes also sense here so I think that was the root of the problem, or something along those lines. But it would be interesting to know the answer to your questions!

Well, that's why most of SBCL's simplifications work by generating a lambda that should be called instead of, e.g., <. It's hard to mess up evaluation order that way; rewriting the whole form is more likely to let errors through.