l'evento RowCreated, avviene per ogni riga, quindi non credo sia il posto ottimale.
La colonna la nascondi una volta sola, per tutte le righe, quindi sposterei sullevento DataBound oppure addirittura nel PreRender della GridView.

Inoltre, carino l'utilizzo di Linq, ma se la colonna ha posizione fissa, più semplice una cosa del genere:
codice:
    //definisco le constandi delle colonne in base alla posizione
    private int M_iCol_Tel = 3;
    private int M_iCol_Prospect = 4;
    private int M_iCol_Comandi = 9;
...
...
...
protected void ......
{
    GridView1.Columns[M_iColComandi].Visible = false;
}