Ok, the heart of the matter is the Alternative instance on which the "many" and "optional" combinators depend.
As the docs say, "empty is a parser that fails without consuming input". So a parser that fails while consuming input can't be equated to "empty". I guess the moral of the story is that one should almost always use "try" with Alternative-y combinators.