When restoring a grid, the condition that checks if a col's visibility needs to be changed is:
grid.columns[currentIndex].visible !== columnState.visible ||
grid.columns[currentIndex].colDef.visible !== columnState.visible
However
javascript columnState.visible and javascript grid.columns[currentIndex].colDef.visible are undefined by default so the visibility is always restored and the event is always fired.