When humans do math with each other, we often fudge definitions around so that things work out. Computers are not so cooperative and this shows up most often with inverse functions in the complex plane.
Basically all smart humans would agree with you if you wrote your identity on a chalkboard:
a^(1/3)/b^(1/3) == (a/b)^(1/3)
But it's not exactly right. Humans are fudging around with what a cube root means to get that identity to work. You can ask Mathematica for a counter example to the identity:
FindInstance[a^(1/3)/b^(1/3) != (a/b)^(1/3), {a, b}]
{{a -> -(262/5) + (67 I)/2, b -> -(319/10) - (557 I)/10}}
The short story is complex branch cuts are a nightmare to work with in real life. Often, when humans say something about them, they implicitly mean "this identity holds if you somehow choose the right value for the branch cut to get it to work".
As a simpler example consider this:
a = -1 + I; b = -1 - I;
a^(1/3)/b^(1/3) // FullSimplify
I
(a/b)^(1/3) // FullSimplify
-(-1)^(5/6)
This is really confusing at first. It confuses everyone from highschool to people with Phd's in math. It's jarring, but as a general rule, inverse functions on the complex plane have branch cuts and when your code has complex branch cuts, you can expect crazy things to happen.