This patch removes all the three callbacks (open/close/page_read) in XL_ROUTINE from XLogReaderState. It only has "cleanup" callback instead.
I actually have a use in mind for these callbacks - to support reading WAL for logical decoding from a restore_command like tool. So we can archive wal when it's no longer required for recovery and reduce the risk of filling pg_wal if a standby lags.
I don't object to your cleanup at all. I'd like it to be properly pluggable, whereas right now it has hard coded callbacks that differ for little reason.
Just noting that the idea of a callback here isn't a bad thing.