you're refering to the documentation for the querysyntax, used by the QueryParser ... which is in fact true: you can \ escape both * and ? as far as the QueryParser goes – but the WildcardQuery class doesn't support (nor does it's documentation advertise) any escape characters.
In a nut shell: you can escape the characters so QueryParser doesn't consider them wildcards – which will influence whether or not QP builds a WIldcardQuery or a TermQuery, but WildcardQuery doesn't know or care about escape characters.
Consider these examples, and assume a whitespace analyzer....
parse("lucene") -> new TermQuery("lucene")
parse("lu?ene") -> new WIldcardQuery("lu?ene")
parse("lu\?ene") -> new TermQuery("lu?ene")
parse("lu\?e?e") -> new WIldcardQuery("lu?e?e")
parse("lu\?e\?e") -> new TermQuery("lu?e?e")
that's why it works the way it does.
as for how to improve it: It seems reasonable for WildcardQuery to have a boolean constructor arg indicating whether or not it should respect "standard" backslash escape sequences ... and then QueryParser could have an option to pass the "raw" string (with escapes) to this new constructor.