Great, definitely seems the way to go. I will have to read your code in more detail.
A few thoughts. For my application, only the bottom-most chart would need a BottomAxis because other such axes would repeat the same data using extra screenspace. I added this code to have a visible axis only at the chart at bottom.
procedure AddPaneAtBottom
if Count > 1 then
Items[Pred(i)].Chart.BottomAxis.Visible:=False;
..and AddPaneAtTop
if Count > 1 then
pane.Chart.BottomAxis.Visible:=False;
For a caption, I don't know if it is best to use a control. It is the easiest way probably. Some elements of the caption need different color. Using the IChartDrawer instead of a control could save space between charts, because the caption could be drawn inside the top margin of the chart instead of a control that has to sit between charts. Not sure if it matters in practice.
Another thought is that splitters may not even be needed if resizing of charts is done like ctrl+leftclicking the caption and moving the mouse. That would also save a little space on screen.
If you zoom in on one chart, the other charts don't respond in a linked way yet, and UpdateListbox tries to access objects using ItemIndex = -1, but I'm sure you already know this.