This behavior is by design.
If you want to prevent it, then you can handle the ColsHiding event, and cancel it if the column is being shown.
private void gridControl1_ColsHiding(object sender, GridRowColHidingEventArgs e)
{
if(e.Values[0] == false)
e.Cancel = true;
}