Your setup appears to have a very nearly stable intermediate solution.
In terms of the energy landscape it must be something like this:
Normally the bouncy solver and the normal solver will reach the same solution, as Scott says.
However, in a case like this, the regular solver might get stuck at (A), while the extra momentum the bouncy solver has can sometimes be enough to carry it over the plateau into the true energy minimum (B).
The ‘Threshold’ input for the regular solver controls when it considers itself converged. The default value is 10^-15 (it shows as 0 when you mouse-over it, but that’s just Grasshopper rounding for display). The energy gradient on the plateau here must be so low that it is stopping. However, if you actually input 0 for the Threshold, you’ll see it slows down, but after a while does carry on to the same solution as you get with the bouncy solver. Note that if you set a threshold of zero that means the solver will continue iterating indefinitely unless you set the On input to false.
Another thing I noticed in your definition is that you are using the DynamicWeight component. This is intended specifically for catenary form-finding with elastic cables, where the length changes significantly and you want to keep adjusting the loads accordingly. For an application like this one, all you need is to apply half the weight of each strut to each of its ends, with the regular Load goal.