Se o seu yes aceitar um argumento de string:
yes links.txt | xargs cat | xargs -n1 --max-procs=4 wget
Não há sentido em executar um cat perl links.txt ou um bash por link (a menos que você queira que as linhas de links.txt sejam interpretadas como código de shell como http://$host$path ou http://evil;rm -rf / ).
Se o arquivo for pequeno o suficiente, você também pode fazer:
yes -- "$(cat links.txt)" | xargs -n1 -P4 wget