Halte ich im Allgemeinen nicht für schlau. So nach dem Motto "Okay, da gibts Bugs wenn ihr was falsch macht, also machts gefälligst richtig!".
Wenn man schon sowas macht, sollte man es auch idiotensicher machen und nicht einfach nur davor warnen, dies oder das zu tun. - Wie gesagt, im Allgemeinen.
Ich muss dazusagen, dass ich das Problem in diesem spezifischen Fall nicht wirklich erkennen kann. Wenn deine Endnutzer schlau genug sind, entsprechende BB Codes inklusive HTML Ersetzungsmuster einzusetzen, werden sie auch wissen, was sie tun und keinen schadhaften Code einfügen (sonderlich viel anrichten könnte das ja eh nicht, außer vielleicht Script oder Object). Im Endeffekt wäre das ja Selbstsabotage, für die du nun wirklich nichts könntest; du willst deinen Nutzern ja nur Möglichkeiten bereitstellen, ihr Projekt verbessern / individualisieren zu können.
Ich halte btw ein Muster wie "[tag=$1]$2[/tag]" => "<tag xyz='$1'>$2</tag>" für am sinnvollsten, dann kann man wenigstens mit mehreren Variablen arbeiten (also nicht nur wie in diesem Falle mit zwei, sondern möglichst unbegrenzt vielen (auch, wenn es nach einer bestimmten Zahl nicht mehr sonderlich viel Sinn macht, da BB Codes die ganze Sache ja vereinfachen und nicht unnötig kompliziert machen soll(t)en)).
Was du natürlich machen könntest, wäre eine Überprüfung des Ersetzungsmusters nach Stichwörtern wie "<script [...]" und ähnlichem. Wenn was entsprechendes gefunden wurde, kannst du eine Warnung anzeigen, dass das verwendete Ersetzungsmuster unter Umständen von Userseite missbraucht werden könnte, um der Seite zu schaden. => "Wirklich fortfahren?": Ja oder Nein.
Generell unterbinden würde ich das nicht, damit raubst du dem Benutzer Freiheit über seine Seite.