The only alternative I can think of is running the wikitext through a tidier first that detects that kind of mess and adds the appropriate close and reopen tags. It requires an extra pass through the text, but might be unavoidable.
Definitely, and arguably enhances comprehension of the text. We need such a pass to keep [[text (bracket)|]] and ~~~~ expansion working in any case.
I wasn't intending the output of the tidier to replace the wikitext, I intended it as a 2-stage parsing process. As other people have said, expanding anything other than ~~~~ is a bad idea. (Proof by anecdote: I only found out about the [[text (bracket)|]] syntax a couple of days ago on this mailing list. Having never read the appropriately help files (I'm male - I don't read manuals ;)), I had no way to know it existed.)