プロセスが分かれており並列で動く可能性があるから
多少ストリーミング型の方が早くはなるとは思うが
以下のように修正すると差は殆ど無くなる。

■手続き型コーディング修正版
i=3
files() {
while [ $i -le 10000 ]; do
file="file${i}.txt"
echo $file
i=$((i+3))
done
}
rm -f $(files)

結果
real 0m0.052s
user 0m0.018s
sys 0m0.044s


余談だがこれはLinuxで実行した結果だがforkが遅いWSLだと
起動プロセスが多い分逆転するかもしれない