Parece que a versão nc
que você está usando usa o IPv6 por padrão. Quando você tem nc
ouvindo na porta 2000, o cliente se conecta a essa instrução ignorando sua regra DNAT somente IPv4.
Quando nada está escutando na porta 2000, ele ainda tenta se conectar a isso usando o IPv6, mas falha, e então retorna para o IPv4, onde a regra DNAT irá enviá-lo para a instância que estiver escutando na porta 4000.
A melhor solução que posso imaginar no momento é simplesmente criar regras equivalentes para IPv4 e IPv6:
iptables -t nat -A OUTPUT -p tcp --dport 2000 -d 127.0.0.1 -j DNAT --to-destination 127.0.0.1:4000
ip6tables -t nat -I OUTPUT -p tcp --dport 2000 -d ::1 -j DNAT --to-destination '[::1]:4000'