According to $G4INCLUDE/G4PhysicsTable.hh, the G4PhysicsTable object is a subclass of std::vector<>. I just checked global/management/src/G4PhysicsTable.cc, and the size-based constructor uses std::vector::reserve(), not ...::resize(). Consequently, although a chunk of memory is “blocked out” for 10 elements (in your example), the vector itself is still empty.
G4PhysicsTable::insertAt() is implemented as
G4PhysicsTableIterator itr=begin();
for (size_t i=0; i<idx; ++i) { itr++; }
G4PhysCollection::insert(itr, pvec);
with no checking on overrun. So, when you attempt to do insertAt() on an empty vector, the itr value points beyond the end of the vector, and the system is quite unhappy.
This might even be worth a bug report: I think that code should pre-test for idx < entries(), and either fail out with an error, or default to “insert at end”.