I have mainly 3 reasons for that:
First, when I timed the gradient function, It seemed to be faster than the other possible builtin functions (as it only handles one filter, very simply, assuming the right parameters).
Second, skimage.filter.prewitt seems to return only the magnitude, not the orientation.
Finally, the reason behind the separation of the function was two-fold: 
* I wanted to be able to test
* More importantly, I wanted the function to be easily usable for HOF for example.
   That's why I separated the computation of the gradients from the rest.