Generally, reactions occur with liquids and gases (which encompasses solutions). This is because there is the fundamental problem of mass transport. When reactants react, they leave product in the wake of the reaction, which isolates the reactants from each other. For fully solid reactants, it means that more reactants have trouble finding each other. When reactions take place in liquid or a gas, there is the prospect of diffusion, which allows more reactant to find each other.
In the reaction you point out, hydrogen sulfide is a gas so it can easily diffuse to find more zinc oxide. The product zinc oxide might not form a perfect coating (i.e., it has holes in it) that allow the hydrogen sulfide to diffuse through this product to find more zinc oxide.
Other examples: when you burn a piece of wood, this is a solid reacting with a gas. But the combustion reaction is actually between vaporized wood and oxygen. The presence of a gaseous fuel is what allows good mixing between it and oxygen to produce a flame.
Finally, an example from a chemistry demonstration: solid barium hydroxide and solid ammonium chloride are mixed together and shaken. They reaction is quite endothermic and can freeze water on the outside of the reaction vessel. The trick here is that the barium hydroxide is usually the octahydrate. The hydrate provides enough water to create small amounts of solution for the reaction.