IEで動的にCSSを読ませる時の注意点

事の発端は、AJAXで画面をロードしまくったところ、突如IECSSを無視し始めたことだった。
調査を進めていくと、この問題は一定数以上画面をロードすると発生することがわかった。そして、〜IE9にはCSSを31個(ルールとしては4095個)しか読み込めないという制約があることが判明する。
http://stackoverflow.com/questions/9906794/internet-explorers-css-rules-limits

ここでIEに文句を言ってもしょうがない。ぱっと思いつく手は、一つのStyleタグにスタイルをJSで流し込む方法である。

<body>

<!--ページ本体-->

<!--IEでCSSをヘッダ以外で読み込ませる場合、CSSは適用対象のHTMLより後に無くてはならない-->
<style id="forge" type="text/css"></style>
</body>
cssForge = function (style) {
  document.getElementById("forge").innerHTML += style;
}

この手は一見上手くいくのだが、IE8でエラーを吐く。未知のエラーとかそんな感じのヤツ。どうも style タグの innerHTML は〜IE8で読み取り専用らしい。
ここでIEに文句を言ってもしょうがない。ぱっと思いつく手は、innerHTML が読み取り専用でない要素を親にし、親からinnerHTMLを書き換える方法である。

<body>

<!--ページ本体-->

<div id="forge">
  <style type="text/css"></style>
</div>
</body>
cssForge = function (style) {
  var forge = document.getElementById("forge"),
    melt = forge.innerHTML.split(/<\/?style[^>]*>/gi);//IE8はstyleタグを大文字で挿入する為、i オプションが必須

  forge.innerHTML = '<style type="text/css">' + melt[1] + style + '</style>'
}

この手は一見上手くいくのだが、IE8でどうにも上手くいかない。F12でデバッガを立ち上げ、実際に挿入されたinnerHTMLを確認してみる。すると挿入したはずの