Вы можете сначала сопоставить каждый элемент так, чтобы каждый продукт ассоциировался с его индексом, затем упорядочить по убыванию и получить первый элемент:
int Index = productList
.Select((x, index) => new { Index = index, Product = x })
.OrderByDescending(x => x.Product.ProductSize).First().Index;
Вам не нужен еще один вызов IndexOf
!