If TrueNAS is not going to support IPv6-only/preferred then the news article referenced should be removed.
At least Debian Trixie (which TrueNAS 26 is based on) is perfectly capable of supporting multiple NICs with DHCP and SLAAC and multiple default routes, even on the same LAN. This is a fresh install of Trixie with completely default config, other than adding the second NIC via KDE. No hacking required.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp0s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 5e:f7:0e:e9:47:32 brd ff:ff:ff:ff:ff:ff
altname enx5ef70ee94732
inet 192.168.10.159/24 brd 192.168.10.255 scope global dynamic noprefixroute enp0s1
valid_lft 86299sec preferred_lft 86299sec
inet6 2001:db8::a87f:d225:3979:8393/64 scope global dynamic noprefixroute
valid_lft 2591981sec preferred_lft 604781sec
inet6 fe80::3f9b:504c:c5bb:4e1d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: enp0s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether f2:10:3e:ab:a2:9d brd ff:ff:ff:ff:ff:ff
altname enxf2103eaba29d
inet 192.168.10.160/24 brd 192.168.10.255 scope global dynamic noprefixroute enp0s2
valid_lft 86300sec preferred_lft 86300sec
inet6 2001:db8::3ae4:d584:203:f41b/64 scope global dynamic noprefixroute
valid_lft 2591981sec preferred_lft 604781sec
inet6 fe80::4236:e8bc:cf3f:d65c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
And two default routes for both IPv4 and IPv6. Note the second link has a higher metric automatically so that traffic prefers the first default route.
user@debian:~$ ip r
default via 192.168.10.1 dev enp0s1 proto dhcp src 192.168.10.159 metric 100
default via 192.168.10.1 dev enp0s2 proto dhcp src 192.168.10.160 metric 101
192.168.10.0/24 dev enp0s1 proto kernel scope link src 192.168.10.159 metric 100
192.168.10.0/24 dev enp0s2 proto kernel scope link src 192.168.10.160 metric 101
user@debian:~$ ip -6 r
2001:db8::/64 dev enp0s1 proto ra metric 100 pref medium
2001:db8::/64 dev enp0s2 proto ra metric 101 pref medium
fd30:dab4:c4c7::/64 via fe80::183f:c818:bca5:b7f1 dev enp0s1 proto ra metric 100 pref medium
fd30:dab4:c4c7::/64 via fe80::183f:c818:bca5:b7f1 dev enp0s2 proto ra metric 101 pref medium
fe80::/64 dev enp0s1 proto kernel metric 1024 pref medium
fe80::/64 dev enp0s2 proto kernel metric 1024 pref medium
default via fe80::ee38:73ff:fe63:ce81 dev enp0s1 proto ra metric 100 pref medium
default via fe80::ee38:73ff:fe63:ce81 dev enp0s2 proto ra metric 101 pref medium
This is a 100% usable and stable / deterministic solution – the route metrics cause the first NIC to be preferred when going off-subnet, and both NICs are equally valid on-subnet. There are good reasons why TrueNAS should support auto-configuring multiple NICs even in the same LAN for multichannel SMB and iSCSI.
If you go one step further, with nmcli you can set both the interfaces to have the same metric and then use ECMP.
# nmcli connection modify "Wired connection 1" ipv4.route-metric 100
# nmcli connection modify "Wired connection 1" ipv6.route-metric 100
# nmcli connection modify "Wired connection 2" ipv4.route-metric 100
# nmcli connection modify "Wired connection 2" ipv6.route-metric 100
# reboot
### after reboot
user@debian:~$ ip r
default via 192.168.10.1 dev enp0s2 proto dhcp src 192.168.10.160 metric 100
default via 192.168.10.1 dev enp0s1 proto dhcp src 192.168.10.159 metric 100
192.168.10.0/24 dev enp0s2 proto kernel scope link src 192.168.10.160 metric 100
192.168.10.0/24 dev enp0s1 proto kernel scope link src 192.168.10.159 metric 100
user@debian:~$ ip -6 r
2001:db8::/64 dev enp0s2 proto ra metric 100 pref medium
2001:db8::/64 dev enp0s1 proto ra metric 100 pref medium
fd30:dab4:c4c7::/64 proto ra metric 100 pref medium
nexthop via fe80::183f:c818:bca5:b7f1 dev enp0s2 weight 1
nexthop via fe80::183f:c818:bca5:b7f1 dev enp0s1 weight 1
fe80::/64 dev enp0s1 proto kernel metric 1024 pref medium
fe80::/64 dev enp0s2 proto kernel metric 1024 pref medium
default proto ra metric 100 pref medium
nexthop via fe80::ee38:73ff:fe63:ce81 dev enp0s2 weight 1
nexthop via fe80::ee38:73ff:fe63:ce81 dev enp0s1 weight 1
### testing ECMP
### note IP flips between the two NICs
user@debian:~$ curl -6 icanhazip.com
2001:db8::a87f:d225:3979:8393
user@debian:~$ curl -6 icanhazip.com
2001:db8::3ae4:d584:203:f41b
user@debian:~$ curl -6 icanhazip.com
2001:db8::3ae4:d584:203:f41b
user@debian:~$ curl -6 icanhazip.com
2001:db8::a87f:d225:3979:8393
user@debian:~$ curl -6 icanhazip.com
2001:db8::a87f:d225:3979:8393
user@debian:~$ curl -6 icanhazip.com
2001:db8::a87f:d225:3979:8393
user@debian:~$ curl -6 icanhazip.com
2001:db8::a87f:d225:3979:8393
user@debian:~$ curl -6 icanhazip.com
2001:db8::3ae4:d584:203:f41b
ECMP is also perfectly reasonable. Sessions are bound to a NIC based on a source/dest IP or 5-tuple hash depending on how a sysctl is set.
I don’t know why TrueNAS doesn’t allow this, but it has had an opposition to DHCP for many years. It’s not reasonable with IPv6 to prevent auto-configuration, and as above shows is completely unnecessary. Maybe IPv6 will be the start of better networking in TrueNAS.