A few clarifications:
1. TL;DR
https://example.com/user/John%20Doe should be used instead of
https://example.com/user/John+Doe
Even though the plus sign is legal there, it shouldn't be legal in the query string (after the question mark). This can be better explained with an example:
* This URL:
http://example.com/search?q=a+b
* Has this query string: q=a+b
* But Q2A changes it to: qa-rewrite=search&q=a+b
So "search" eventually becomes part of the query string. So even though a plus sign is legal before the question mark, it will be moved after the question mark, and according to standards, plus signs shouldn't show up in that part of the URL.
So
https://example.com/user/John+Doe would mean moving a plus sign to the query string, so it should be encoded like
https://example.com/user/John%2BDoe (note '%2B' is '+'), which is not the intention. The logical step is to make sure the part before the question mark has a space, (note '%20' is ' ')
I want to clarify that this "weird" movement of texts between the right and left part of the question mark is non-standard. It is only intended to support different URL schemas. That complexity is the price to pay for that feature.
2. The "Search results for John Doe on Example" issue is a mystery. I think you have configured your browser to use that page as a search engine (of the brower) so that is why it is triggering the search page. If you send me a video with this I can confirm it. You can also try this in a different browser to confirm my theory.
3. Searching for "x+y" should result in an URL that looks like "x%2By" and the title of the search should show "Search results for x+y". I think this all makes sense
4. The "search results for username on website" issue I guess it is the same as #2. I would need a video as well.