In the z-base-32 specification, Phil Zimmermann wrote:
Our choice of confusing characters to eliminate is: `0', `l', `v', and `2'. Our
reasoning is that `0' is potentially mistaken for `o', that `l' is potentially
mistaken for `1' or `i', that `v' is potentially mistaken for `u' or `r'
(especially in handwriting) and that `2' is potentially mistaken for `z'
(especially in handwriting).
If an l or a v arrives when decoding, we don't know what to do with it. But if a 2 arrives in the encoded form, we can presume it should have been a z, and if a 0 arrives, we can presume it should have been an o.
The decoding functions could be more lenient for 2 and 0, mapping them to z and o directly.