Have you tested if the child objects really are active in game? The behavior has changed from Unity3 when SetActiveRecursively was needed. Since Unity4, setting the parent to inactive should also deactivate the child objects (in game) even though it still shows them as active in the inspector.
See the documentation for GameObject.SetActive()
Note that a GameObject may be inactive because a parent is not active.
In that case, calling SetActive() will not activate it, but only set
the local state of the GameObject, which can be checked using
GameObject.activeSelf. This state will then be used once all parents
If you really do want to deactivate the child objects, even when the parent is reactivated, then you will need your own function. Unity doesn't provide it anymore.
Here is a link to a solution that you can copy-paste to your own code.