Вы используете третий синтаксис, специфичный для атрибутов, в котором вы можете указать поля для инициализации в экземпляре атрибута, используя синтаксис Name = Value в вызове конструктора.
[WebMethod(cacheDuration: 300)]
будет работать так же хорошо, но он использует стандартный синтаксис именованных параметров вместо синтаксиса инициализации поля атрибута. Помните, что атрибуты существовали раньше, чем существовали именованные параметры.