What I just described shows how the number of columns will always correspond with the highest numbered column for which a getColumnDefinition was called. It is now new behavior that if you call removeColumnDefinition on the last (i.e. highest numbered) column, then the columnCount will decrease.
Since there is no way to bind the Array of RowColumnDefinitions, since that property doesn’t exist on the Panel class, you have to have some code that does the update.
But in any case it appears that the semantics of the Panel.columnCount property do not match what you were looking for. So, don’t use it for whatever purposes you have.