In this case, mostly legacy compatibility. Making an app that works with versions that don't have pg_lsn have a nice path forward to the modern world. Being able to cast from pg_lsn to int8 can also make it easier to work with the values in the client application, though I don't need that for this particular one.
Wouldn't we need a uint8 type for that?
I guess we could just show people negative LSNs if the high bit is set (that being rather unlikely) but still...
Yes, in theory. Though the likelihood of actually reaching that... It would probably be OK to just throw an error if the high bit is actually set.