> Any specific reason why container's pop_back method can't check for
> current size and if it is 0 then make the pop operation a no-op?

Calling pop() on an empty stack is usually a mistake but defining it as a no-op would hide the mistake, making it harder to spot. Leaving it as UB allows people to have verbose checks in "debug mode" without having to pay the cost in "release mode".