When gtk_im_context_scim_focus_out() is called, it always uninstalls the key snooper if it is installed. I confirmed on 1.4.9's source code.
It should uninstall the key snooper only when the given context is current focused context. E.g., when I call gtk_im_context_focus_in() with IM context "A", SCIM installs key snooper. Then, if somebody calls gtk_im_context_focus_out() with IM context "B" accidentally, the context A doesn't lost focus but the key snooper for it is uninstalled.