It really comes down to what you’re working with. If you get an engine where the tangent basis is synced, the results are always so much better. Again, the problem is that a lot of programs wind up calculating them differently (I think as far up as the 2011 version of 3dsMax would calculate them differently when baking and when showing it in the viewport). If you bake in xnormal it should look fine in xnormal’s model viewer, but move it to another program and the map could no longer look accurate. Some engines like Unreal don’t even appear to be synched to anything. There is no standard set in place, which is why a simple zbrush solution doesn’t seem as easy to me. Maybe it would end up baking a map that looks fine for Maya users, but then Max/Softimage/Unity/etc users will think it’s incorrect, when it’s just the result of the programs seeing the mesh a bit differently. Zbrush used to have an OpenGL preview for its normal maps, but it most likely just ended up confusing people because results that might look perfect in the preview wouldn’t look the same when rendered elsewhere, or vice versa.
As for gradients on the cube, don’t get me wrong, you’re still going to want to try and split the uv islands into different smoothing groups, the hard edges matching the UV borders. A cube is really a pretty deceptive example as it seems like it would be one of the most basic shape to work with, but really it’s nothing but sharp 90’ angles everywhere (every face is hard edge), and it has a silhouette that doesn’t quite match what is trying to be projected onto the edges. Chances are you’ll only see gradients in the bake if you try and run a single smoothing group over more than one side, and when that’s the case then the gradients are simply just information being used to try and correct that smoothing. They’re only there to help, and if they are there, its because the baker saw the need to put them there to try and match what it was seeing on the high res source.