This would avoid situations such as
Code:
vec.insert(vec.end(), vec[0]);
vec[0] is a reference into the same vector. Now imagine that the buffer needs to be resized. If the implementation is not careful, it might end up using a reference to the object it has just moved to a different place.
Or another problem:
Code:
vec.insert(vec.begin(), vec.back());
Even if the vector didn't reallocate the memory, if it started by making room for the new item, vec.back() might end up referencing the last but one item before it is inserted.