クロスブラウザな実装として、MSDNなんかでは、「機能で切り分けろ」と書かれてるのですが、
ぶっちゃけ、IEだけは、ブラウザのバージョンで管理したほうが、DLするコード総量を抑えることができる。

この解は、スマホ全盛期な時代に、携帯端末にDLするコード量は少ないほうが良いに決まってる。
一方で、古いブラウザを使ってるのは、業務用のアプリケーションに指定されてるとか、色んな条件はあるものの、デスクトップに限られるわけで。ブロードバンドに常時接続されてる可能性が高いとなれば、古いIEではパッチが当たるようにスクリプトを書けば良い。といった持論から導いたもの。


たとえば、イベントのアタッチ部分:
そのまま web標準のAPI を使うのがベストだけど、パッチを当てられるようにしたコード


// 'CoreObjects.js'
var MyUtil = {
	addEvent : function ( node, event, handler ) {
		node.addEventListener( event, handler, false );
	}
}


コード量の違いが歴然。
上記コードを読み込んだ直後に読むようにタグを書いておけば、該当オブジェクトは上書きされてIE用のパッチが当たる。
イベント回りは特に新旧の差が激しいので、古いIE対策をブラウザバージョンで実装するだけでも軽くなるはず。

// CoreObjects.IE.js
//<!--[if lte IE 7]><script type="text/javascript" src="./js/CoreObjects.IE.js"></script><![endif]-->

MyUtil.addEvent = (function(){
	if ( window.addEventListener ) {
		return function ( node, event, handler ) {
			node.addEventListener( event, handler, false );
		}
	}
	else if ( window.attachEvent ) {
		return function ( node, event, handler ) {
			node.attachEvent('on' + event, function () {
				handler.call( node, window.event )
			})
		}
	}
})();


IEのときだけは、MSDNにある記述の通り、機能で判別すれば良い。
これ、互換性維持を要求され、安易にweb標準を実装できなかった IEというブラウザの宿命だと思います。
てなわけで、IEはバージョンごとにパッチが当たるように書く。


追記)
こんな記事を書いた直後なんですが、HTML5.js のメーリングリストからこんなニュースが。

- IEがChromeと同様に自動アップグレードするように http://bit.ly/t4C0vN これは素晴らしいニュース。 セキュリティ上も、そしてHTML5未対応ブラウザがWebに残り続けないという点でも。 しかも、お客さんが自動アップグレードするかどうかを選べるようにするし、XPもVistaも対象とのこと。大英断ですね!