S = arrayfun(@vpasolve,eqn,'uniform',0);
You will find that the first result is empty. It corresponds to x = 0, which gives vel = 0 which gives Re = 0, and your eqn divides by Re so you get an inf at that point. If you remove the exact 0 in x, then you can remove the 'uniform', 0 in arrayfun.
The reason your call is failing is that when you call solve() or vpasolve() with a vector or array of equations, then MATLAB tries to find values of the variables that solve all of the equations simultaneously. However, there is no single f that can satisfy all of those equations at the same time. What you really want to do is solve them independently, which arrayfun() is handy for.
