The BlitzMAX compiler does not generate code that obtains mutexes, and from what I understand, the GC is unable to track objects created in a thread that isn't the main thread (leading to in the best case weird memory leaks, in the worst case random and arbitrary crashes). Also the debugger is probably going to throw up a few fits of its own.
Surely if you build your app properly for threading, the GC shouldn't be an issue?
Well that depends on how you define "properly". In languages like Java and C# you have a mechanism (a monitor) that lets you define what part of your code is a "critical sector" - wait and notify in Java, lock and unlock (IIRC) in C#. A similar mechanism does not exist in BlitzMAX, and I don't see how such a mechanism can be bolted on (if you'll pardon the expression).