I'd say there is no difference between generaly and you can use bith of them as synonyms. But зачем could be used for expression wonder or discontent. Compere these:— почему ты выбросил хлеб (neutral question, asking person wants to know the reason) — потому что он испортился.— зачем ты выбросил хлеб? (more indignation, that could mean that asking person had some purpose on the bread) Ты что, не знал, что я хотел сделать из него гренки.