Add a button to the right SplitPanel and set it's anchor to Bottom and Left.
No, that should be Bottom and Right to get a repro for this. It is caused by the SplitterWidth assignment. Set it to 6 for example to get the button to move by 2 pixels.
This is caused by an inevitable flaw in the automatic layout calculation, the order matters a great deal and it poorly interacts with the ISupportInitialize interface, as implemented by SplitContainer. The panel's layout is calculated first but it still has a size that was based on the default SplitterWidth. The SplitContainer is next, now it notices that the panel is too wide and shrinks it. Which, because the button was already anchored to the right, causes the button to move by the same amount that the panel was too wide.
Such layout calculation order dependencies are common and inherent in the way it was designed. Particularly problematic with inherited form classes where the derived form has a different size from the base form class. Controls whose position depend on that size (anchored to the bottom or right) will end up in the wrong position.
Many possible workarounds for this, including not anchoring to the right, not changing the default splitter width and calculating the button position yourself.