`zero` doesn't act on integers, it acts on other functions.
The second argument to `zero` is a placeholder. The intuition is that `zero s` is "apply the function `s` zero times". What do you get if you apply the function `s` zero times to an argument `z`? You get `z`.
There's a hint later down in the article about type-checking.