There is less error checking in rand, which can be at times preferred... For example, if you need to generated random numbers between a and b, and it doesn't matter if a > b.
But you'll need to make sure a and b are properly ordered for unifrnd:
if (b < a)
[a, b] = deal(b, a);
Or else your result will be a vector of NaNs.