Zinc is higher on the Metal Activity Series than iron. That means zinc metal oxidizes more easily than iron. The metal that oxidizes more easily can protect another metal that oxidizes less easily but not the other way around.
But then copper and tin can also be used to plate iron even if they're less reactive than iron.
Another way to look at this is that the zinc coats the iron. Before iron can corrode, the zinc coating must be removed. One reason this reaction is slow is because zinc forms a thin layer of zinc oxide which remains relatively stable on the surface of the metal (see passivity of metals). More zinc doesn't readily react because the zinc oxide coating resists further oxidation. Tin and copper also form protective coatings on iron. They are less reactive than iron; hence, the coating protects the iron.
From DrBob's and my answer, I hope you can see that a metal surface can be protected in two ways:
1. Coat the active metal with the less active metal. This works well if coating stays in place and does not allow oxidizing agents through it. Cu and Sn on iron fit that description. If there is a breach in such a coating, the exposed area oxidizes even faster than if the coating was absent.
2. Coat the metal to be protected with a more active metal (i.e. zinc over iron). Protection is provided by "sacrificing" the coating to oxidizing agents. This electrochemical protection works even if the coating is partly damaged.