SymPy should not to do anything automatically that is not generally true. In this case, making x nonnegative is sufficient to get it to do what you want.
>>> var('x', nonnegative=True)
x
>>> (x**8)**(Rational(1,4))
x**2
If you want that done without creating a new 'x' use powdenest with force=True:
>>> (x**8)**(Rational(1,4))
(x**8)**(1/4)
>>> powdenest(_, force=True)
x**2