Setting grid.columns[i].hidden may work to some extend, but isn't emitting columnVisibilityChange and further activities on a column set visible are not working but resulting in error, e.g. calling reorderColumn() results in:
TypeError: Cannot set property 'orderIndex' of undefined
at GridComponent.push../node_modules/@progress/kendo-angular-grid/dist/fesm5/index.js.GridComponent.updateColumnIndices (https://localhost:4201/vendor.js:196833:43)
The grid internal method updateColumnIndices() throws an error, because it doesn't get the newly visible column from expandColumnsWithSpan() and expandedColumns.indexOf(source) is -1.
Thus it's required to add methods like showColumn/hideColumn or setColumnVisibilty.