もともと helgrind という race detector が valgrind tool として存在した
tsan は最初は valgrind の tool として実装された
ただ「どう考えてもコンパイラがメモリアクセスにコード埋める方が速くて簡単だよね」という議論があったのかなかったのか、知らんけど、今は clang/gcc のプラグインとしてのやつしかメンテされてない、と思う、たぶん
実際 valgrind 以前のメモリチェッカはコンパイラに差し込まれるものが多かったと思うので、常識的なアプローチに回帰したと言える、と思う。普通に考えて、「全てのメモリアクセスに介入したい」ならコンパイラをいじるべき