siempre crei que la sentencia "select" devolvia un conjunto no ordenado de registros. el orden de este conjunto puede variar dependiendo de la version de la base de datos o de la base de datos.
 
por ejemplo, si se te ocurriese migrar esta base de datos a otra como maxDB, por ejemplo, nadie te asegura que el orden vaya a ser el mismo. 
sin embargo en esta sentencia si tiene sentido hablar del ultimo elemento: 
Código:
 select * from nombres group by categoria ORDER BY id
  ya que en este caso se trata de un conjunto ordenados de registros. 
si quieres obtener el ultimo: 
Código:
 select * from nombres group by categoria ORDER BY id DESC
  y te quedas con el primero.