This is related to https://www.telerik.com/forums/radsplitcontainer-not-reporting-docking-state-or-width-height-correctly, I hadn't realised the XAML had a RadDocking inside another RadDocking.
The code looks like this:
<telerik:RadDocking Name="radDocking" telerik:RadDocking.SerializationTag="DockingTag">
<telerik:RadSplitContainer Name="container" InitialPosition="DockedTop">
<telerik:RadPaneGroup Name="ContainerGroup">
<telerik:RadDocumentPane Name="OutputPane" Header="Output"/>
</telerik:RadPaneGroup>
<telerik:RadPaneGroup Name="FormGroup">
<telerik:RadDocking>
<telerik:RadSplitContainer>
<telerik:RadPaneGroup>
<telerik:RadPane x:Name="Form1" Header="Form 1"/>
</telerik:RadPaneGroup>
<telerik:RadPaneGroup>
<telerik:RadPane x:Name="Form2" Header="Form 2"/>
</telerik:RadPaneGroup>
</telerik:RadSplitContainer>
</telerik:RadDocking>
</telerik:RadPaneGroup>
</telerik:RadSplitContainer>
</telerik:RadDocking>
When the layout is saved (using radDocking.SaveLayout), I get this:
<RadDocking SerializationTag="DockingTag">
<SplitContainers>
<RadSplitContainer Dock="DockedTop" Height="359">
<Items>
<RadPaneGroup SelectedIndex="0">
<Items>
<RadDocumentPane IsDockable="True" Header="Output"/>
</Items>
</RadPaneGroup>
<RadPaneGroup SelectedIndex="-1">
<Items/>
</RadPaneGroup>
</Items>
</RadSplitContainer>
</SplitContainers>
</RadDocking>