I have found that a combination of the two approaches works best for me. In some cases it is easiest and most practical to combine (union) shapes to get to what you want, and in others it easiest to subtract (difference or intersect).
That said, it's pretty easy to just output an STL from OpenSCAD, open it in a 3D CAM tool (Kiri:Moto is a free option, MeshCAM (ob. discl., I work for a distributor) paid) and get toolpaths.
Folks have worked up various other approaches --- I've been using PythonSCAD to output a DXF which can then be used for making toolpaths: