Você não entende como o sistema está lidando com arquivos.
Você exclui a entrada do arquivo, mas o arquivo ainda existe contanto que o programa mantenha um controle sobre ele. Então, o tee nunca é notificado, a entrada foi excluída e ainda é gravada no arquivo!
Um arquivo único pode ter muitas entradas graças aos hard links (criados pelo comando ln).
Você pode escrever sua própria versão do tee, que fecha e abre o arquivo em cada linha que ele grava no arquivo, mas seria muito fraco, já que geraria muitas chamadas do sistema.
Aqui está uma função shell que irá dividir sua entrada em vários arquivos:
splitSizeInKio=100
splitInput(){
local PS4='+splitInput+ '
set -x
local i=0
local fname="$1"
local ii
while true
do if [ $i -lt 10 ]
then ii=0$i
else ii=$i
fi
local outfile="$fname".$ii
dd of="$outfile" bs=1024 count=$splitSizeInKio
i=$((i+1))
done
}
(Você pode usar "head" em vez de "dd" se você derramar em um número de linhas em vez de um tamanho.)
Com bash, você pode usar "substituição de processo" assim:
prog1 | tee >( splitInput somefilename ) | prog2