Update: 2025-10-05. an upvote inspired me to write a perl version
It's easier/simpler with perl:
$ perl -lane 'print join "\t", @F[0..3],
grep { $_ < $F[3] } @F[4..$#F]' input.txt
NC_000001.11_NM_001005484.2 69270 234 69037 65565
NC_000001.11_NM_001005484.2 69511 475 69037 65565
NC_000001.11_NM_001005484.2 69761 725 69037 65565
NC_000001.11_NM_001385640.1 942155 20 942136 924432 925922 930155 931039 935772 939040 939272 941144
This prints the first 4 fields of each line, and any remaining fields which are numerically less than the fourth field, joined by tab characters (change that to a space if you need to).
It uses the perl command-line options -l (enable automatic handling of line-endings), -a (autosplit each input line into array @F), -n (operate like sed -n, i.e. read and process each line but don't print anything by default), and -e (next arg is the script to execute). See man perlrun for details on these and other options.
It also uses perl's built-in grep() function, which is named for its similarity to the grep command-line tool - it can be used for regex or string matches, but what it actually does is return a list of all elements of a list for which the expression evaluates to true. See perldoc f grep for details.