iOS4のMobileSafariでは問題無く来るOnTouchStartイベントがiOS5では来ないケースがあったので検証ページを作りました。まとめると、次のようになりました。

iOS4iOS5
divにOnTouchStartを設定OKOK
divにOnMouseDownを設定OKOK
innerHTML内にOnTouchStartを含むdivを動的に作成OKNG
innerHTML内にOnMouseDownを含むdivを動的に作成OKOK

innerHTMLで動的にdivを作る場合で、そのdivにOnTouchStartイベントを登録した場合のみ動作しません。OnMouseDownではOKなのでMobileSafariのバグな気がします。JQueryでもこれが原因でButtonが動作しない問題があるようです。

いろいろ試してみた結果、対処法としては、
 document.getElementById("div_id").innerHTML="<div ontouchstart="alert('hoge');"></div>";
と書かずに
 document.getElementById("div_id").innerHTML="<div id='hoge1'></div>";
 document.getElementById("hoge1").addEventListener("touchstart",function(){alert('hoge');},false);
のように、一度innerHTMLにdivを作った後に、遅延してaddEventListenerをすれば回避できるようです。