Com base em um rápido vislumbre das fontes GNU Coreutils 8.21 e rsync 3.0.1, além de dar uma olhada no que eles fazem com o strace, o rm do GNU Coreutils parece chamar malloc () um pouco mais do que o rsync faz quando executa a mesma coisa. Tenho dúvidas de que isso explica completamente a diferença de velocidade, mas é parte da explicação mais provável.