The divide by Z is how we make it create a ray with enough length to always hit the bottom of the virtual floor that we are projecting downwards. At glancing angles, ray length approaches infinity as Z approaches 0.
right here is one of the biggest differences between POM and bumpoffset. Bumpoffset does not do the divide by Z which reduces the height along the horizon which also helps to hide artifacts.
I made graphic to explain something different in relation to pixel depth offset but I think it still shows point:
On the left is a normalized ray without divide by Z. you can see even if you scale it to the desired height it will not hit the floor at glancing angles without adjustment.
The comment about product is a bit unnecessary in case. The Z is simply the tangent space camera vector Z.