Зачем нужны статические(ударение на слово "статические") поля/автоматические статические свойства в классе?
Статическая область памяти инициализируется до начала исполнения точки входа main.

Статический класс гарантирует существование единственного экземпляра класса.

Статическое поле позволяет реализовать хранение данных, которые будут существовать вплоть до выхода из функции main.

Статический конструктор позволяет произвести предварительную инициализацию для класса ещё до создания хотя бы одного экземпляра класса.

Статические данные, таким образом, можно считать достоянием главного потока, исходного процесса. 

В общем случае, всё статическое используется для инициализации, которая должна произойти раньше рантайма. Но это справедливо только для области каждого класса / иерархии классов, а не всего набора классов в исходном коде, потому что управлять порядком отработки статических конструкторов - моветон.

Если использование кода не предполагает использование класса в нескольких потоках, то допускается использование "общих" данных в статических полях, но как правило, это рационально только для readonly и const.
Одна из реализаций паттерна синглтон, на статическом поле класса строится. Ну и как выше, всякие счётчики, какой нибудь класс обработчик, общий на все классы, да куча разных кейсов.