Hmmm, I don't know... A control also has an owner - this is the component which is responsible to destroy it. The panel was created by Form1 and, therefore, has Form1 as its owner. When the panel now is moved to Form2 with your code still Form1 remains the owner. When now Form1 is destroyed before Form2 the panel is removed from Form2 (hopefully!) - but this will be very surprising for the user.
The problem is that the Owner is a read-only property and cannot be change easily in the same way as you did with the Parent.
One solution might be to create a new panel on Form2, assign the Form1.panel to it (i.e. copy its properties), and then destroy the panel on Form1. Of course, this must be repeated for all controls sitting on the panel...
But possibly there is a better solution...