このテンプレートは<mt:ifDynamic>ダイナミック<mt:else>スタティック</mt:ifDynamic>で構築されました。
いくらPerl弄っても動作が直らないと思ったらPHPのほうに問題があった。何を言ってい(ry等と言うことにならないためですね。
さて、ここでちょっとした罠があります。mt:ifDynamicと対になるようなテンプレートタグmt:ifStaticでは、このような書き方は出来ません。
このテンプレートは<mt:ifStatic>スタティック<mt:else>ダイナミック</mt:ifStatic>で構築されました。
上記テンプレートは、スタティックでは期待通りに動きますが、ダイナミックでは以下のような出力になってしまいます。
このテンプレートはで構築されました。
原因は、mt:ifStaticタグのPHPでの実装が、テンプレートタグとしてではなく、コメント(のような)扱いになっているためです。
<mt:ifStatic>・・・</mt:ifStatic>の部分が、再構築より前に強制的にテンプレートから削除されてしまうんですね。なので、その中に何個mt:elseを書こうが、全部消えてしまうわけです。mt:ignoreと同じですね。
これはおそらくダイナミックパブリッシングでは、ページビューごとに構築が行われるため、より細部の高速化を重視しているものかと思われます。mt:ifStaticとmt:ifDynamicで非対称な動作となっているのでちょっと違和感がありますが、上手く使い分けると良いと思います。