The size of the address space is capped by the number of
unique pointer values. For a 32-bit processor, a 32-bit
value can represent 2 32 distinct values.
If you allow each such value to address a different byte
of memory, you get 2 32 bytes, which equals