A mi me ha pasado algunas veces, sobre todo cuando se crean paneles en ejecución o cualdo se visualizan o se ocultan, como te pasa a tí.
La única solución que he encontrado es reposicionar los paneles después de hacer las operaciones de creación o de visualización.
Es decir, si los paneles tienen de alto 100 pixels, pues realizar un bucle que los recoloque en el orden correcto. Algo así
Código Delphi
[-]for i := 0 to 10 ...
Panel[i].Top := (PANEL_HEIGHT * i);
...
end;