Além de apenas pensar em uma coisa, um paradigma do TDD é escrever o mínimo de código possível para passar no teste. Quando você escreve um teste de cada vez, é muito mais fácil ver o caminho para escrever código apenas o suficiente para que o teste seja aprovado. Com todo um conjunto de testes a serem aprovados, você não encontra o código em pequenas etapas, mas precisa dar um grande salto para que todos passem de uma só vez.
Agora, se você não se limitar a escrever o código para fazer com que todos passem "de uma só vez", mas escreva apenas o código suficiente para passar um teste de cada vez, ainda pode funcionar. Você precisaria ter mais disciplina para não apenas prosseguir e escrever mais código do que o necessário. Depois de iniciar esse caminho, você se abre para escrever mais código do que os testes descrevem, o que pode ser não testado , pelo menos no sentido de que não é conduzido por um teste e talvez no sentido de que não é necessário (ou exercido) por qualquer teste.
Descobrir o que o método deve fazer, como comentários, histórias, uma especificação funcional, etc., é perfeitamente aceitável. Eu esperaria para traduzi-los em testes, um de cada vez.
A outra coisa que você pode perder escrevendo os testes de uma só vez é o processo de raciocínio pelo qual a aprovação em um teste pode fazer com que você pense em outros casos de teste. Sem um banco de testes existentes, você precisa pensar no próximo caso de teste no contexto do último teste aprovado. Como eu disse, ter uma boa idéia do que o método deve fazer é muito bom, mas muitas vezes me vi encontrando novas possibilidades que não havia considerado a priori, mas que só ocorreram no processo de escrever o testes. Existe o perigo de você sentir falta deles, a menos que tenha o hábito específico de pensar em quais novos testes posso escrever que ainda não possuo.