For private internal types, you can do whatever you want. But for a public API, Display is more flexible, as it works with the formatting macros (println, format, and so on), and it's available in #![no_std] environments where ToString isn't available. Also, implementing Display is not complicated, so there is little reason not to do it.
One counterpoint is that in some cases, it's possible for a manual ToString implementation to optimize better, compared to the blanket impl for Display. This should rarely matter, though.