Why doesn't setActive() completely disable object?

I have a pool of objects that get reused as their parents are scrolled around. When they’re not active I set GameObject.SetActive(false), however they’re still visible on screen. I seem to also have to fetch their renderer and set it’s enabled to false also. I imagine for more complex objects with children or multiple renderers this could get messy.

I’d expected the behaviour to be similar to unticking the enabled box at the top of the inspector.

It should do the same.
Maybe your code is not being executed properly…?