まぁ、表題の通りなんですが。

UINavigationControllerのpopToRootViewControllerAnimated:を呼んだときに、そのとき表示していたUIViewControllerのviewWillDisappearが呼ばれるのを期待していると、実際には呼ばれないので残念なのことになります。

stackoverflowにも以下のようなスレがありました。

viewWillDisappear not called when calling popToRootViewControllerAnimated

どうもiOSのバグっぽいことが書いてありますね。

対応としては、対象のUIViewControllerでwillMoveToParentViewController:をオーバーライドするとそれで検知できるようです。

引数で渡ってくるUIViewControllerがnilの場合は、popToRootViewControllerAnimated:された時ということみたいです。