When the widget's tags change, onChangeTags toggles the valid state of the widget:
this.toggleValid( this.checkValidity() && !( this.hasInput && this.input.getValue() ) // The input must be empty );
One problem with checking for an empty input here is that the input must be cleared before adding a new tag, or the widget will be set to an invalid state. However, clearing the input first causes problems (T243075).
It seems the check for the empty input was added in order to address T208507, but that bug seems to be solved by checking the above in onInputBlur. We should be able to remove the check from onChangeTags.