Tampoco sé si hay alguna diferencia entre el código mío y ese, si cambiará en algo el resultado a corto o largo plazo.
La diferencia deberias tenerla clara ya que el propio nombre de las funciones 
Reverse y 
Sort indican su funcionalidad:
Reverse invierte el orden de los elementos de la secuencia.
Sort ordena los elementos de la secuencia, según el resultado de una evaluación entre los elementos.
En el código de 
Code Academy la colección ya te la dan ordenada de manera ascendente:
- libros.sort! { |primerLibro, segundoLibro| primerLibro <=> segundoLibro } 
Entonces, si le haces un 
Reverse lo que estás haciendo es invertir el orden de Ascendente a Descendente, por ese motivo y en este caso específico la solución de usar 
Reverse sería perfectamente aplicable, sólo que 
Code Academy no acepta esa solución por el motivo que sea (el motivo podría ser lo que ya epxliqué en mi comentario anterior).
Sigo sin entender muy bien ese código.
El operador 
<=> toma dos objetos, 
A y 
B, los compara y devuelve 
-1, 
0, o 
1:
Si 
A es mayor que 
B, devolverá 
-1Si 
B es mayor que 
A, devolverá 
1Si 
A y 
B son iguales, devolverá 
0El algoritmo de ordenación utiliza el resultado de esa evaluación para determinar en que posición de la colección deben ir los elementos:
Si el resultado de la evaluación es 
-1, 
A debe posicionarse despues de 
B.
Si el resultado de la evaluación es 
1, 
B debe posicionarse despues de 
A.
Si el resultado de la evaluación es 
0, no importa le orden.
Slaudos
EDITO:He escrito este ejemplo por si te ayuda a entenderlo mejor utilizando un bloque de código para una evaluación personalizada:
- # -*- coding: WINDOWS-1252 -*- 
-   
- col = [ "d", "a", "e", "c", "b" ] 
-   
- ascendantCol =  
- col.sort {  
-     |a, b|    
-     case 
-         when a > b 
-             +1 
-         when b > a 
-             -1 
-         else 
-             0 
-     end 
- } 
-   
- descendantCol =  
- col.sort {  
-     |a, b|    
-     case 
-         when a > b 
-             -1 
-         when b > a 
-             +1 
-         else 
-             0 
-     end 
- } 
-   
- print "Ascendant : #{ ascendantCol.join(', ')}\n" 
- print "Descendant: #{descendantCol.join(', ')}\n" 
-   
- __END__ 
Saludos