Twitterで質問されたので,少し書きます.

Method Swizzlingは,すでに実装されているクラスのメソッドを,自前のメソッドに入れ替えるObjective-Cならではの手法です.

iOS SDK Hacksでも紹介したMethod Swizzlingですが,これを使っても審査は通ります
というか,通したことがありますし,これを使っていて現在公開中の中に審査に通っているアプリがあります.

ただ,たいてい,Method Swizzlingを使いたくなるメソッドは,Private methodだったり,内部的にあまり触れる必要がないUIKitで実装されたViewのsubviewの構造であったりします.
そのため,OSのバージョンアップ等で使えなくなったり,不要になったりするリスクがあります.(例えば,iOS SDK Hacksでも紹介したUIWebViewのタッチイベントをswizzlingする手法は,UIGestureなどの登場でUIViewの内部実装が変わったため,使えなくなってしまいました)
これがリスクになる理由は,Method Swizzlingのコードの例外処理等が不備があったりするとアプリケーションクラッシュしてしまう可能性が高くなるためです.

というわけで,Method Swizzlingを使うリスクは,多少あります.
Method Swizzlingをわざわざ使うときは,Private methodやUndocumented API,UIKitのViewの内部構造に触れることが多いので,それに注意してやらないといけないし,また,それらを避けるとMethod Swizzlingの旨味が減ります.
というわけで,ほどほどがいいですよという結論です.