A saída do echo no loop while é sempre unbuffered. Se você remover a opção -n , verá as linhas que contêm os pontos que aparecem a cada segundo.
Parece que less sempre tenta ler uma linha completa e não a exibe até chegar ao fim da linha ou ao final do arquivo. Não parece haver uma opção para mudar isso.