With ComplexExpand you can coerce the result you get without the Reals restriction to an expression involving only real terms:

Reduce[x^3 - 15 x + 2 == 0, x, Cubics -> True] // ComplexExpand // Simplify

(* x == Sqrt[5] (Cos[1/3 ArcTan[2 Sqrt[31]]] + Sqrt[3] Sin[1/3 ArcTan[2 Sqrt[31]]]) ||

x == -2 Sqrt[5] Cos[1/3 ArcTan[2 Sqrt[31]]] ||

x + Sqrt[15] Sin[1/3 ArcTan[2 Sqrt[31]]] == Sqrt[5] Cos[1/3 ArcTan[2 Sqrt[31]]]

*)

My guess would be it doesn't try hard enough to get rid of the complex parts of the result and falls back to Root.

Note that Simplify by doesn't use ComplexExpand by default:

(* Penalize expressions involving Complex *)

complexity = LeafCount[#] + 1000 Count[#, _Complex, Infinity, Heads -> True] &;

roots = Reduce[x^3 - 15 x + 2 == 0, x, Cubics -> True];

(* Gives Bunch of stuff with I *)

Simplify[

roots,

ComplexityFunction -> complexity

]

(* Same result as roots//ComplexExpand//Simplify *)

Simplify[

roots,

ComplexityFunction -> complexity,

TransformationFunctions -> {Automatic, ComplexExpand}

]