Conceptualmente los métodos de clase son métodos que tienen la particularidad de pertenecer a la clase y no a las instancias de la clase. Por esto es que para invocar a un método de clase no es necesario crear una instancia de la clase que contiene el método.
En aquellos lenguajes cuya sintaxis deriva de C, los métodos de clase se identifican con la palabra clave static y de ahí que en ocasiones se los llame métodos estáticos. Conceptualmente desde la POO creo que este nombre no es correcto pues mezcla una cuestión conceptual con un detalle de implementación de algunos lenguajes particulares.
public static doFoo() {
..
}
En Ruby, los métodos de clase de clase, se los identifica en su definición con el prefijo self.
def self.doFoo
...
end
El Smalltalk (pharo) los métodos de clase son definidos en un compartimento particular.
Me gustó tu opinión sobre la palabra reservada «static» y la interferencia que causa para expresar el concepto de método de clase.
Personalmente no he utilizado activamente el lenguaje C y sus derivados en los que la palabra static, tengo entendido, se utiliza para definir los scopes y el nivel de visibilidad de las métodos. Sin embargo he utilizado Java y a pesar de no conocer el uso de static en sus antecesores no me resultó intuitivo entender que nos estábamos refiriendo a un método de clase al usarlo.