Tipos de clase de Ruby y declaraciones de casos

Cuál es la diferencia entre

case item.class
when MyClass
  # do something here
when Array
  # do something different here
when String
  # do a third thing
end

y

case item.class
when MyClass.class
  # do something here
when Array.class
  # do something different here
when String.class
  # do a third thing
end

Por alguna razón, el primero de estos funciona a veces y el segundo no, y otras veces, el segundo funciona y el primero no. ¿Por qué? ¿Cuál es la forma "adecuada" de hacerlo?