{smarty_header http_equiv="Content-Type" content="text/html"}
<?xml version="1.0" encoding="EUC-JP"?>

このように、XML宣言の前に関数を使うと、XML宣言の前に
空行が出力されてしまいます。これはXHTMLにおいて致命的な文法エラーになってしまいます。

smarty_header関数は header() でHTTPヘッダを出力するだけだし、
プラグインファイルは終了タグの '?>' を省略しているので文字列は出力していないはずです。

コンパイルされたファイルを見てみたら以下のようになっていました。
<?php echo smarty_function_smarty_header(array('http_equiv' => "Content-Type",'content' => "text/html"), $this);?>

<?php echo '<?xml'; ?>
version="1.0" encoding="EUC-JP"<?php echo '?>'; ?>