EAsyncExecution::Thread should almost be banned as it creates a thread for each task, which is not what people want/expect most of the time as the cost is huge. There is no downside in using a threadpool unless the code is misbehaved. One such example would be a recursive function that would create a task at every recursion and wait on it, such code would likely exhaust all threads in the pool and end up into a deadlock. But such code would be far better off just being replaced with a sane pattern anyway
As for all the other things that runs from the same pool, this is by design and what we want to avoid preemption/oversubscription and performance problems. In a typical taskgraph, long tasks should be split into smaller ones so that every tasks has a fair chance to run. For long tasks that can’t be broken for some reasons, using an external thread pool could be the proper avenue taking into account that it will inevitably cause oversubscription and additional preemption when the system is work saturated.
Hope this helps,
Danny