Más tarde aquí, pero me gustaría intentar crear una definición precisa: las funciones estáticas son funciones que no hacen referencia o no pueden hacer referencia a propiedades / métodos de instancia de la clase que lo contiene.
En algunos lenguajes, como C #, puede haber campos o propiedades estáticos en las clases estáticas, por lo que no es exactamente correcto decir que no se usan para el estado; una función estática podría hacer uso del estado estático (global).
Básicamente, se reduce a: las funciones estáticas, como cualquier cosa estática, son útiles cuando tiene sentido que siempre estén disponibles sin depender de instancias no estáticas.
Las funciones auxiliares, como las funciones matemáticas, son un ejemplo frecuente, pero hay otras.
Si la clase que crea requiere que los datos sean inmutables, podría tener sentido crear funciones estáticas que tomen una instancia y pasen una nueva instancia ya que la instancia no puede (o no debe) cambiarse. Las clases de cadena, por ejemplo, pueden tener funciones estáticas que toman una cadena (o 2 o más) y devuelven una nueva cadena.
Otra razón podría ser que hay una clase que mantiene un estado global o datos de algún tipo. Puede haber funciones estáticas que funcionen con las propiedades estáticas o los campos en esa clase estática.