Maybe it would be clearer to drop the comment and newline handling
stuff from the core requirement specifier syntax (declaring that
newlines are simply a syntax error), and assume that there's some
higher-level framing protocol taking care of that stuff?

that sounds right to me.

(Nice to see Metadata-Version: 2.0 getting some real-world use! I

the use of 2.0 already is odd
see here for old discussion in the wheel tracker: