For upscaling, sure. For downscaling it has a tendency to both amplify and distort (rather than preserve) detail and sharpness, "imagining" detail that never existed, leaving you with a worse result. Bicubic and sometimes even bilinear does a better job, truer to the original, when you're scaling down.
I think what you're seeing is aliasing. You need to filter for the Nyquist frequency of whichever is smallest, the input or the output. When upscaling the input is always smallest so it's easy. But when downscaling you need to adjust the width - for a 0.5x scale you need a filter 2x the size. I have my own hand coded Lanczos-5 that I use for all my scaling needs, and it's perfect.
Lanczos if you want sharpness above all else. There's also the well-known Mitchell-Netravali filters[1], based on piece-wise cubic splines and with two tunable paramerers.
There's a pair of parameters that make Mitchell-Netravali nearly identical to Lanczos-3, but my grep-fu is failing me at the moment. I'll try to find it later.
Found it. The parameters are B=0 C=0.5458 in the Mitchell-Netravali formula to emulate Lanczos-3. It's not a perfect match, but I dare you to see the difference.