For consistency and less issues.
Parts remain the same (their position does too!). All objects you put inside the model remain the same.
Joints are the only thing that gets obliterated, which doesnt really make sense, since you need to manually recreate them and it is not guaranteed to work (leading to models randomly breaking after moving them between workspace and not-workspace for a couple of times in my case)
So, could joints be associated with their respective parts and automatically restored when the part is reinserted into workspace?
Obviously, joints could not be ‘saved’ if only one part is moved away from workspace. Joints would only be saved if both parts were moved out of workspace in the same frame. Joints would only be restored if both parts are moved back to workspace in the same frame as well.
This might interfere with scripts that recreate joints of objects when theyre put back to workspace. (because the scripts assume the old joints were removed). But this shouldnt be a big issue and has many solutions. If only one joint is allowed to exist between 2 parts at a time, with the newest being the active one, the scripts would just override any automatically restored joints. Alternatively, scripts can be modified to call :BreakJoints() before putting a model back to workspace (but this requires developer to be active).
TL;DR joints being removed when a model is reparented away from workspace is inconsistent with other ‘properties’ of models being reserved and only causes issues with no benefits.
(also this would eliminate like 90% of :MakeJoints() calls probably which is a +)