It can detect more errors and you don't need to recompile anything.
Both approaches have their right to exist, but I have been preaching to people that valgrind does not find all memory safety bugs that modern tools can find, and they should be testing with sanitizers. I still experience that many people are not aware of asan+co and only know valgrind.
ThreadSanitizer requires that all code with atomic accesses be instrumented.
MemorySanitizer requires that all code which writes to a byte in memory be instrumented.