There are cases when there exist several different shortest curves with exactly the same length.
Do you have a better idea than mine which is adding obstacles to first found curve so that algorithm is forced to find a second curve?
Here for cube we have six such curves so I would have to add 1, 2, 3, 4 and 5 obstacles to find them all. The process is manual because you do not know which route the algorithm choses.
The following describes only the first added obstacle... I think the rest is obvious.
FindShortestCurve[RegionBoundary@Cube[],{1/2,1/2,1/2},-{1/2,1/2,1/2}];
HighlightRegion[Region[Style[Cube[],Opacity[0.5]]], %]
ArcLength[%%]
RootApproximant[%]
RegionUnion[Cube[],Ball[{0,1/2,-1/2},1/10]]//BoundaryDiscretizeRegion//RegionBoundary;
FindShortestCurve[%,{1/2,1/2,1/2},-{1/2,1/2,1/2}];
HighlightRegion[Region[Style[%%,Opacity[0.5]]], %]
ArcLength[%%]
RootApproximant[%]



surfaces = MeshPrimitives[Cube[], 2]; line = FindShortestCurve[ RandomSample[surfaces, 5] // RegionUnion, {-1/2, -1/2, -1/2}, {1/2, 1/2, 1/2}]; Graphics3D[{{Red, line}, Opacity[.2], surfaces}]$\endgroup$