From the Microsoft Dynamics NAV Blogs: Working with Hidden Columns; Using PowerShell and NAV Services; Inventory Value to GL Reconciliation
Why is dynamically hidden column still shown visible in Customize This Page? Van Vugt's dynamiXs blog pondered this question and shared inconsistencies in the product. Luc van Vugt expressed he could live with the flaws, but it didn't meet his image of consistency.
When you dynamically hide a column - i.e. by means of code -... the column will indeed be hidden, but if you have a look at the Choose columns section on Customize This Page the column will be shown in the list of visible columns. And when you select the column name the Remove button is disabled.