Recently, I have encountered on a strange behaviour with the functions NGUITools.SetActive(bool). As far as I am aware, it should active only the root object in UNITY_4+ and it does that if the root object has at least one child active, but if there are only disabled children, it actually forces to enable them all. So that is the issue, because, for instance, as I have been using disabled objects in pools, in order to activate them again if they are needed.
P.S. I found some strange lines in the script NGUITools.cs, here they are:
http://joxi.ru/GafOUhjKTJAzAdv-vRI (931 - 951). So, in my opinion, there is a mistake after line 945 in the case I just described above.