机上調査レベルですが、実機で画面が揺れる(ピクンと跳ねる)のは、
・PPUへのデータ転送処理より先にIRQカウンタの設定をしている
・パレットの書き換えでPPUアドレスの$3fxxにアクセスしている
のが原因っぽいです。

$3fxxにアクセスするのでPA12のアドレス線が0→1に変化。
これをMMC3が拾ってIRQカウンタをカウントダウンすることで、
1ライン早くIRQ割り込みが発生して、画面がずれると推測しました。