History APIとhashchange

HTML5の仕様にHistory APIなるものがあるそうで、Ajax通信等で画面遷移を行わないけど、URLは変更する・・・みたいな用途に使うんだそうです。GitHubで既に使われており、現状「#!」を使ってhashchangeによってAjax遷移するような手法(twitter等)から、今後はこちらの方が主流になっていくのでは・・・とよく言われています。
で、簡単な使用方法を見てみたのですが・・・これって基本的にリンククリックやブラウザの戻る進むボタン等の処理にイベント定義して、イベント内でAjax通信し、画面遷移をする代わりにHistoryのpushstateを呼んでURLのみ変更させる・・・という手段を用いているみたいです。
うーん・・・これだと、hashchangeイベントが画面遷移ロジックを全て集約可能で、直リンクにも対応できていたのと比較すると、機能としてかなり後退してしまっている気がします。
ただ、hashでAjaxアプリの画面遷移を操作する手法が、URLを本来の意味で使用していないという批判を浴びたり、SEO関連の問題を引き起こしているというのも事実なので、何かいい手法はないものでしょうか・・・たとえば、hashchangeイベントのような、locationchangeイベントみたいなものがあって、そこでevent.preventDefault()することが出来る・・・みたいな