Вызов статических методов происходит быстрее и менее ресурсоемкими поскольку не нужно создавать экземпляр класса и они являются частью самого класса.
Разница между ними является это сам подход в программировании и разная область видимость компонентов самого класса.
Традиционный вызов через экземпляр класса является более приемлемым т. к. этот подход позволяет сохранить все "благородные" подходы (OOP, SOLID и т. д.)
Вызов статических не рекомендуется потому как большинство принципов и подходов нарушаются. чаще всего используется вызов статических методов в хелперах (например классы для удобства работы по обратоке строк, математических функций и т. д.) либо в паттернах аля синглтон (обычно это какието глобальные классы в рамках самого проекта где можно быстро получить какие то конфигурационные данные проекта, доступ к базе данных и т. д.)
Раз уж в тегах "1С-Битрикс", то на всякий случай стоит отметить, что у класса CIBlockElement есть только статический GetList.
А разница между статическими методами и методами экземпляра в том, что метод экземпляра работает в контексте конкретного объекта, имеющего определённое состояние (значения свойств), зачастую изменяя это состояние. Такое совмещение хранения данных и действий над ними в одном объекте - позволяет создавать более ясные и поддерживаемые программные интерфейсы. А статические методы по использованию больше напоминают обычные функции.
Елисеев тоже как то на вебинаре говорил что статические методы это просто функции которые не относятся ни к какому и их нужно "хоть куда то" положить ,чтобы не висели в коде вне классов.
Разница в том, что в первом случае создаётся экземпляр класса, а во втором - нет. Очевидно же!
Но думаю что вы спрашиваете немного про другое. Вы не можете просто взять и заменить один вызов другим. Они предназначены для разных целей.