J'ai souvent lu à droite et à gauche que le choix entre les accolades et le do end était purement estéthique en ruby et que globalement un code d'une ligne se mettait entre accolades, quand un code de plusieurs se mettait entre do end.

Et bien, c'est faux, il y a une différence.
Prenons l'exemple d'un accumulateur qui réalise la somme des chiffres de 1 à 10 :

s = (1..10).inject do |sum, n|
	sum + n
end
puts s
=> 55

peut s'écrire de la même façon que :

s = (1..10).inject { |sum, n|
	sum + n
}
puts s
=> 55

Ce qui change c'est le moment d'évaluation du block ; il est possible d'écrire :

puts (1..10).inject { |sum, n|
	sum + n
}
=> 55

mais pas :

puts (1..10).inject do |sum, n|
	sum + n
end
=> `inject': no block given (LocalJumpError)