[1] Perl 5.10.0 ですが、 {} の中身が16進数でなくても、 hex() した値でエラーなし (警告はあり) で処理されるみたいです。
[2] ES3 によると \x の後に16進数が2文字続かないとエラーですが、 どのブラウザでも16進数2文字が続かない場合には \ がない場合と同じ扱いになります。
正規表現ではない文字列リテラルでも WinIE 以外では同じことになります。 WinIE 7 ではエラーになります。
[3] Perl では、十六進数1桁が続く場合にはそれだけを十六進数エスケープの一部とみなします。 十六進数が続かない場合には、 \x00 とみなします。