You need QGIS >= v2.16 for that.
Let's define the following handy function:
def setColumnVisibility( layer, columnName, visible ):
config = layer.attributeTableConfig()
columns = config.columns()
for column in columns:
if column.name == columnName:
column.hidden = not visible
break
config.setColumns( columns )
layer.setAttributeTableConfig( config )
And then you can call it to hide or show columns in the attribute table. For example:
vLayer = iface.activeLayer()
setColumnVisibility( vLayer, 'FIRST_COLUMN', False ) # Hide FIRST_COLUMN
setColumnVisibility( vLayer, 'area', False ) # Hide area column
setColumnVisibility( vLayer, 'FIRST_COLUMN', True ) # Show FIRST_COLUMN
setColumnVisibility( vLayer, 'area', True ) # Show area column