I’ve added a response to the Stackoverflow question. Shortly put, value-changed event is being fired when the parent component (<iron-data-table> in this case) binds a value to the value property of the <vaadin-combo-box> after the default value has been set to it. So there is an actual value change going on.
In your use case, it’s better to use two-way binding instead of listening to value-changed events, as I’ve explained in my answer in Stack.