I agree, there is no “best” for all purposes. It depends on what you are trying to do and how you tend to work and think. To me, blender, while an extremely powerful tool, has a very steep learning curve. SolidWorks and Fusion 360 are good, but cost money. I tend to use OpenSCAD not only because it’s free, but because I’m a programmer and tend to think in programmatic terms anyway and feel right at home with using it. But depending on what you are trying to do, some things lend themselves well to programmatic scripting, while other things tend to be overly complicated and annoyingly difficult.
For example, if you wanted to make a mounting plate with a series of evenly spaced holes, OpenSCAD is perfect as you can knock it out in a few lines of code. But, if you want an intricate pattern, like a router would place on the edge of moulding, it can get quite involved in OpenSCAD. Even a simple rounding or filleting of a junction can be annoyingly complex in OpenSCAD.
However, OpenSCAD, if used correctly, lends itself to parametric design, where if you code it correctly, you can change one or two numbers at the top of the code and completely reshape and/or redimension your part allowing you to easily print multiple variations trivially, whereas other programs that may have been trivial to design the part initially would require much more changing and editing to produce the same feature change.
You can, of course, use a mix of tools. For example, if you have a difficult or highly detailed part to design or want to start with a 3D scanned image or something, you can start out in something like blender. But then, you can import the STL from it into OpenSCAD and apply parametric scripted changes to the externally designed parts and generate a composite STL for printing. (This technique is also useful if you want to modify an existing design where only a STL is available, for example.)
So it comes down to a combination of personal preference and the specific design project at hand.