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.)