Technically, the second block of code is not 100% equivalent.
Why? Well, it uses more instructions (so more memory and
also takes longer to execute) but it also sets ALL bits of
the Program Counter, not just the ones that a goto or call
can.
We could use the second block of code to goto to a correct
page, but it would be annoying to use in practice because it
would mangle the W register.
Does the code even work at all? I don't know anything about PIC microcontrollers, but I would have expected that writing to PCLACH would cause a jump immediately, meaning that the write to the low bits in PCL would never even happen.