It sometimes provides an incomplete result when solving non-linear equations. For instance, doing
solve(Eq(w*x + y*z,0), [w,x,y,z], dict=True)
returns the incorrect result ⎡⎧ -y⋅z ⎫⎤
⎢⎨w: ─────⎬⎥
⎣⎩ x ⎭⎦
which is invalid when x is zero. There are more compelling examples, but I don't know any off the top of my head. Interestingly, Wolfram Alpha seems to be better at returning the whole solution, so I use it in combination with Sympy.