Сначала он воспринимает это как обычный вызов метода и проверяет не определен ли в типе, на котором вызывается метод, метод с такой сигнатурой, если не находит его, то просматривает extension методы и только потом метод с атрибутом ParamArrayAttribute, перед тем как вызвать этот метод, компилятор также записывает в IL код создания и инициализации массива, который нужно передать в метод
На последнем месте среди всех аргументов метода
Компилятор генерирует класс и IL код который инициализирует этот массив значениям переданными в метод
Автосгенерированный класс:
(Я не понимаю где в IL коде передаются сами значения, которыми нужно проинициализировать массив)