#+ reader should insist on seeing a next form
(read-from-string "(let ((foo 3) #+sbcl) wat)") => (LET ((FOO 3)) WAT)
This is not a regression. The bug is present in ancient versions of SBCL going all the way back to CMUCL.
All other Lisp implementations I tested reported an unmatched parenthesis.
The negative case works fine because the reader *must* eat and discard one form.