Allerdings ist es schwierig, die Unterstützung von change beim Formularelement festzustellen, da kann man wohl nur negativ vorgehen und die Sache für die Browser nachbauen, von denen man weiß, dass sie gerade kein change beim Form feuern...
Ich würde vermutlich anders vorgehen: Nicht mit dem Feuern von change-Events beim Formularelement in der Bubbling-Phase rechnen, denn das ist meines Wissens nirgendwo spezifiziert - auch wenn es einige Browser tun. (In HTML 5 gibts dafür den Event »formchange«, den allerdings noch kein Browser unterstützt, soweit ich weiß.)
Die Nicht-IE-Browser kennen Capturing von change-Ereignissen:
formularElement.addEventListener("change", handler, true);
IE kennt addEventListener nicht und auch kein Capturing, für den ist dein Ansatz als Fallback wie gesagt sehr clever (zumindest fällt mir gerade kein besserer ein). Der Witz ist halt, dass es »sicher« ist, im else-Zweig von if (formularElement.addEventListener) deinen Fix anzuwenden, weil ausgeschlossen ist, dass der change-Handler dann zweimal ausgeführt wird. (Es kann ja sein, dass ein kommender IE sich wie die anderen Browser verhält, daher ist eine Browsererkennung schlecht, eine Fähigkeitenerkennung besser.)
Mathias