Adicionando zero às forças de campo awk para tratá-lo como um número, não como uma string:
$ awk -F"|" 'NR==FNR{a[$2+0]++;next} a[$2+0] ' file1.txt file2.txt
a|0001|hj|df
a|0002|ed|nb
a|0004|er|ns
Como uma string 0001
é diferente de 1
. Adicionando zero a cada, nós os convertemos em números, o que resulta na comparação que você deseja.