Oi Ian,
[. . .] Qual a opinião de vocês? [. . .]
Bem, aqui vai a minha opinião... Um pouco (bastante) confusa...
Essas coisas são bem pessoais e altamente discutíveis.
Não tenho uma opinião objetiva sobre isto, especialmente por não saber o que é "código limpo".
Cada vez que eu olho algo que já escrevi, acabo reescrevendo de maneira um pouco (as vezes muito) diferente.
Em geral eu prefiro fazer o código o mais claro que eu puder.
Por exemplo, eu frequentemente declaro variáveis que não seriam necessárias, simplemente por que acho que fica mais claro.
Quando eficiência é algo importante, eu acabo tentando responder as perguntas:
Fazendo o código um pouco mais obscuro/complicado há um ganho "realmente" significativo?
Onde está o "gargalo", onde devo me preocupar em otimizar.
Profiling costuma ser uma ferramente útil que ajuda a responder essas questões:
http://en.wikipedia.org/wiki/Profiling_(computer_programming) (conceitualmente)
http://en.wikipedia.org/wiki/Profile-guided_optimization (conceitualmente)
http://www.thegeekstuff.com/2012/08/gprof-tutorial/ (usando gcc)
As vezes acabo fazendo mais de uma versão do programa.
Em particular, sobre recursão, considere a solução qu fizermos na aula para o Problema das Torres de Hanoi.
A base da recursão era "n == 0". Acho que o código ficou simples.
Se a base fosse "n == 1" o código ganharia algums linhas (3?). Não acho que ficaria complicado e economizaria chamadas recursivas.
No entanto, no caso, como o número de movimentos é 2n-1, acho que a economia seria "dinheiro de pinga".
Sei lá, . . .
P.S. Mudando de assundo 
A função hanoi(n,...) com base n == 0 faz Z( n) chamadas recursivas onde Z( n) é dado pela recorrência
Z(0) = 0
Z( n) = 2Z( n-1) + 2, n > 0
A solução dessa recorrência é Z( n) = ?.
Já, a função hanoi(n,...) com base n == 1 faz U( n) chamadas recursivas onde U( n) é dado pela recorrência
U(0) = 0
U(1) = 1
U( n)= 2U( n-1) + 2, n > 1
A solução dessa recorrência é U( n) = ?
Bem, sabemos que o número de movimentos necessários para resolver o problema das Torres de Hanoi com n discos é M( n)= 2n-1, que é o número mínimo de mensagens que o programa deve imprimir.