We actually looked into this SetActive earlier today in Unity. The way it was changed was a bit unexpected. Using NGUITools.SetActive(go, false) sets every single object to disabled, while setting a disabled state of an object in 4.0 simply sets its own state to 'disabled' and all the children remain enabled, but disabled in the hierarchy. So... for NGUI's sake, the way it is right now is actually correct, but going forward it's better to use Unity's functionality for non-NGUI stuff.
Talking to Joachim, in a future version the Unity's active state might get changed to activate parents before children, which will eliminate the need for NGUITools.SetActive to begin with.