На мой взгляд, да, шаблон провайдера - это форма инверсии контроля.
Что я рассуждаю?
По своей сути IoC является очень общей концепцией, настолько, что Мартин Фаулер говорит о том, что чтение пользовательского ввода из командной строки представляет собой форму IoC .
В модели провайдера инверсия происходит, когда платформа провайдера решает, какой провайдер будет использоваться при вызове данного метода. Например, когда вы вызываете Membership.GetUser, ваш код делегирует контроль над тем, какого поставщика Membership использовать, структуре провайдера.
Как говорит Фаулер: «Инверсия контроля - это общая характеристика фреймворков», и если подумать, многие паттерны связаны с IoC (например, паттерн стратегии). Я бы даже сказал, что даже полифизм является формой IoC (пункт, к которому я бы с удовольствием хотел бы услышать контраргумент).