-lmcheck (MALLOC_CHECK_) + -pthread should warn the user. In reality -pthread always gets indirectly linked so -lmcheck should just check if a new (second) thread has ever been created in this process. Maybe it is enough if mabort() does this check - that the crash is due to unsupported mcheck usage and not due to the program's bug. One does not immediately realize all the possible reasons of a crash.
mcheck and MALLOC_CHECK_ are distinct debugging features. MALLOC_CHECK_ is fine, it's mcheck that doesn't work well with threads. Given the general brokenness of mcheck, I am inclined towards gradually pulling the plug on it. Newer targets don't even have __malloc_initialize_hook that is needed to make -lmcheck work.