com paste :
paste -d '\n' <file1.txt - - - file2.txt
embora continue mantendo as linhas depois que um dos arquivos estiver esgotado, se ainda houver linhas no outro arquivo, como em sua amostra.
com awk :
awk '{print}; NR % 3 == 0 {getline < "file2.txt"; print}' file1.txt
Ou o equivalente sed do GNU:
sed '3~3 R file2.txt' file1.txt
Desta vez, pare assim que file1.txt estiver esgotado, mas continue se file2.txt estiver esgotado (e imprima linhas vazias na variante awk e nada na variante% GNUsed).
Para parar assim que um dos arquivos esgotar:
awk '{print}
NR % 3 == 0 {
if ((getline < "file2.txt") <= 0) exit
print
}' file1.txt