I don't know if this will help, but I also struggled with this sentence. I wrote, "Why do we have so many cats?", which was marked wrong. So I went and got my Russian wife. As she explained it to me, if you think of the first two words as "what for us" that's where the concept of need comes from. It's not that you already have the cats, you are asking "For us, why so many cats?" I imagine a couple in a pet store looking at a litter of kittens. One person wants them all and the other replies зачем нам так много кошек?
As you know, почему means "why" and so does зачем. However, dissecting the words yields two different forms of the question "why?". They both have чем, which means "that." по means "by" and за means "for". Therefore, зачем is "for that" and почему is "by that". In conclusion, зачем asks more about reason and почему is focused more on method.