What is the best way to model the intersection of multiple hard-surface pieces?
If you're talking about cutting panels, There's a very nice non-destructive method demonstrated by Penfinity, at the time of writing, in two videos, here and with an improvement thanks to Nahuel Belich, here.

Penfinity likes to be a bit of a magician, so this answer will try to slow the explanation down a bit; draw back the curtain.

1. Select the Edges

..you would like to cut between the panels, and..

2. Assign them to a Vertex Group. 

(the second halves of the following illustrations show the vertex weights, under the bonnet. You won't see most of that stuff, unless you apply the modifiers, and you don't want to do that..)



3. Assign a Bevel modifier

..with two segments, by 'Vertex Group'. This will isolate the edge selection from Masking later on, and determine the width of the gaps you are going to make. The modifier-created edges have an interpolated weight, which allows us to select them away in the next step.



4. Assign a Vertex Weight Edit modifier

..with the Vertex Group as its target. It is set to remove vertices from the group, with a full weight of 1 as the upper threshold. This results in the group being modified as shown:



5. Assign a Mask modifier

.. with the inverse of the modified vertex group as its target. This cuts a gap as wide as the original bevel into your mesh.



Now you can set where and how wide the gaps are, by adding/removing from the original edge selection, and setting the width of the first bevel.

This is the modifier stack at this stage:



Now you can add a Solidify, Bevel (by 'Angle'), and Subsurface modifier. Simply changing the settings in the first and second bevels can give you a lot of flexibility in the outcome:



and everything is editable.