Use parent class to declare a child object or how compiler allocates memory
Kind of a strange question for CodeReview as I see nothing wrong with your code itself. Answering your questions:


... is that a problem?



  No.



Does the compiler allocate memory when I declare a variable?



  Here's a good answer from Eric Lippert on storage location when declaring variables.


The only thing you could change about your code is make it a switch statement (although this change has nothing to do with the memory question):

private void ShowControlForBatchStatus(BatchStatus batchStatus)
{
    MyControl control = null;
    panelContainer.Controls.Clear();

    switch(batchStatus)
    {
        case BatchStatus.NoBatch: control = new InicializeLevel(); break;
        case BatchStatus.BatchRunning:
        case BatchStatus.BatchPaused: control = new Stadistics(); break;
        case BatchStatus.BatchFinish: control = new FinishBatch(); break;
    }

    panelContainer.Controls.Add(control);
}