This is all because of the Column width property in a table.
If you right-click the table and choose Table properties, you'll see a dialog such as:
In the original "pristine" state, all 3 columns have their column width unchecked. In the following image I'm using the second row to indicate the column width property of each column:
Thus all 3 columns have the column width unchecked.
After you resize column "a", notice what happens to the column widths:
Columns "a" and "b" get explicit values, while "c" is still unchecked:
Example of column "a" Table properties:
So long as you have an unchecked column, it'll resize to fit the document width. Thus if you delete column "b":
... column "c" will expand to fill in the remaining value.
Now it's clear why deleting column "c" causes a problem:
... both "a" and "b" had their values explicitly set, and neither will expand to fill the document.
However, this is easily fixed. If you right-click column "b" and you uncheck column width, you'll see that it correctly expands to fill the document:
Thus, to go from a "corrupt" table to a "pristine" table, choose the column(s) you want to auto expand, and remove their explicit widths.
Side note: I mention column(s) in plural because multiple columns could be in the unchecked state at a time even if one of the columns has an explicit value:
In this case it'll just evenly distribute the available width between the columns that are unchecked ("b" and "c" become the same width in this case).
Note: You may be tempted to use the "distribute columns" feature to achieve a similar effect, but it distributes columns using explicit values. Thus you'll end up with corrupt tables. Avoid using that feature, and when you want to distribute columns, just remove their column widths as outlined above.