startActivityForResultを呼び出した直後にonActivityResultが実行され、呼び出されたActivityがfinishしたときには、onActivityResultが実行されない現象が起こりました。もうちょっと付け加えると、

(呼び出し元の)startActivityForResult

(呼び出し元の)onActivityResult

(呼び出される側の)onCreate

という順番になってます。

ググってみると、こんなディスカッションがありました。
Manifestファイルの中で、呼び出す側/呼び出される側の双方のActivityが「android:launchMode="singleInstance"」とか「android:launchMode="singleTask"」になっているとstartActivityForResultが機能しないようです。「singleInstanceは使うな」って書いてありますね。メモリー節約と思ってほぼ全部のActivityにこの設定をしていたのですが、あんまり使わない方が良いのだろうか・・・。

追記:ここらへんのまとめをされてる記事