I wanted to put this somewhere on the internet to save others the hours of hassle that I spent on this problem.
There is an issue with PPS in the Linux Kernel version 5.10.65-tegra that I am using. The link below explains the issue better than I can, but essentially the PPS setup code overrides an error with EINVAL unnecessarily.
If booting from an NVME drive and flashing using the l4t_initrd_flash.sh script, a GPIO PPS device will never be initialized despite proper kernel and device tree configuration. My theory for why this happens is that the NVME boot process takes longer than booting from EMMC, and thus the GPIO device is not ready before the PPS kernel code tries to add a PPS GPIO pin. The bad kernel code overrides the error with EINVAL and makes the system abandon PPS altogether. By making the change in the kernel source code from the link above, the proper error code is thrown and the call to add the GPIO pin is retried later.
This requires recompiling the kernel, which is its own can of worms.
The following output from dmesg supports this theory:
[ 0.565300] pps_core: LinuxPPS API ver. 1 registered [ 0.565331] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <email@example.com> [ 3.385005] pps_ldisc: PPS line discipline registered [ 3.389811] pps-gpio pps_gpio: failed to request PPS GPIO [ 7.192833] pps_core: source pps_gpio.-1 got cdev (246:0) [ 7.192850] pps pps0: new PPS source pps_gpio.-1 [ 7.193192] pps pps0: Registered IRQ 276 as PPS source