Instead of contrasting insert to item assignment, it's more analogous to slice assignment, since both change the size of the list.
>>> a = [1, 2, 3]
>>> a[100:100] = [100]
>>> a
[1, 2, 3, 100]
Slices also don't raise IndexError, and so is consistent with:
a.insert(100, 100)