It concerns me that based on what you said, you might not be using the docking windows API properly. For instance, you should never reference any containers in code, since they dynamically get created/destroyed based on layout changes. Instead, you want to use methods described in the documentation like ToolWindow.DockTo to programmatically build up a layout. The first tool window you could DockTo the side of the DockSite. The ones after that, if you wish to have them be "tabbed", you could DockTo the first tool window and use the "attach" dock mode.
The proper place for ScrollViewers is in the content of the tool window. ScrollViewers are often the best root element for your tool window content. That way if the tool window resizes too small for its content, the user can still get to everything by scrolling.
You can use the DockSite.ControlSize attached property to try and indicate a desired size for a tool window before it enters the layout, although it might only work on the tool window that first creates the tool window container. Also, you can programmatically resize SplitContainers that get created (see our Programmatic Sizing QuickStart), which might help you more for your scenario.