Тут як би пізно, але я хотів би спробувати створити точне визначення: статичні функції - це функції, які не можуть або не можуть посилатись на властивості / методи екземпляра класу, що містить.
У деяких мовах, як-от C #, у статичних класах можуть бути статичні поля або властивості, тому не зовсім правильно сказати, що вони не використовуються для стану; статична функція може використовувати статичний (глобальний) стан.
В основному вона зводиться до: статичні функції, як і все статичне, корисні, коли має сенс завжди бути доступними без залежності від нестатичних випадків.
Допоміжні функції, як і математичні функції, є найчастішим прикладом, але є й інші.
Якщо створений вами клас вимагає, щоб дані були непорушними, можливо, має сенс створити статичні функції, які беруть у себе примірник і передають новий екземпляр, оскільки екземпляр не може (або не повинен) бути змінений. Наприклад, класи рядків можуть мати статичні функції, які беруть рядок (або 2 або більше) і передають назад новий рядок.
Іншою причиною може бути те, що існує клас, який зберігає глобальний стан або якісь дані. Можуть бути статичні функції, які працюють зі статичними властивостями або полями в цьому статичному класі.