When I used to design automated machinery, I would use configurations to show my machine in various stages of the cycle. This worked great for providing drawing views of my assemblies, but didn’t work so great for detecting interferences between moving components along the path of motion. For instance, if I had a pick and place robot (picks a part up from point A, then moves to point B) that crashed somewhere in the middle of its path of motion, I wouldn’t know until it was too late (sorry about that, Chief). Thankfully, there’s a way to drag my parts and sub-assemblies through their full path of motion without the need to dissolve all my subassemblies.
I can do the same thing at the station layout level and get the same control on that swivel griper no matter how many layers of sub assemblies it’s in! I can even have multiple instances of the griper sub assembly independently controlled.
The default behaviour is to solve as Rigid, which means that if you have a sub-assembly that isn’t fully defined, it won’t move around when you drop it into a parent assembly. The fact that it is default behaviour is likely due to maintaining the legacy behaviour (this feature didn’t always exist). It also simplifies things if my sub-assembly is under defined.
You do need to be careful to not go overboard using the Flexible mode. One of the dangers that can occur is that it is a lot easier to have mate conflicts, and you’ll find yourself fighting your mates. Another drawback of using flexible sub-assemblies is that your rebuild time goes up, which means slower performance. The bottom line: only use this option when it’s appropriate to use this option. This goes for most everything, though.