It's looking like I will need to recompile gpsd with pps=off as Lichvar suggested. I disabled the BeagleBone overlay for the GPIO pin that I was using for PPS and connected the PPS line to the CTS pin for UART4. That caused only one PPS source to be created for /dev/ttyS4
[ 1.537951] pps_core: LinuxPPS API ver. 1 registered
[ 1.537960] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <
giometti@xxxxxxxx>
[ 17.542045] pps_ldisc: PPS line discipline registered
[ 17.543815] pps pps0: new PPS source serial4
[ 17.543896] pps pps0: source "/dev/ttyS4" added
However chrony doesn't appear to be getting that PPS based on what I see using chrony sources
debian@beaglebone:~$ chronyc sources
210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#? NMEA 0 4 377 14 -9382h[ -9382h] +/- 107ms
#? PPS 0 4 0 - +0ns[ +0ns] +/- 0ns
Also, ppstest /dev/pps0 outputs errors
debian@beaglebone:~$ sudo ppstest /dev/pps0
trying PPS source "/dev/pps0"
found PPS source "/dev/pps0"
ok, found 1 source(s), now start fetching data...
time_pps_fetch() error -1 (Connection timed out)
time_pps_fetch() error -1 (Connection timed out)
time_pps_fetch() error -1 (Connection timed out)