Threads in thread pools are often called "worker thread" for good reasons. They are like some workers in a company, ready to work on some "tasks", each one taking some work space to work, each one having it's queue of task to process.
Launching a thread just to execute a task is like finding the resources to hire someone specifically for this task, making her do it, then firing her.
Obviously, if the task is very long, rare and specific, there might be no trouble with this, but the more often this occur, the more expensive it is.
In this case, just putting the task on top of the task queue of a worker can be enough. If he take too much time to start working on it, another worker that will have no more tasks to do can steal the task from his queue. If no worker are available for some time then it means that either you don't have enough workers, or it cannot be done fast with the available resources. In particular, if you already have the maximum amount of workers you can use without everybody walking on feet of others, like in a thread pool, then you can do nothing about it other than have a bigger place (better hardware) or reduce work load.
This analogy can also easily explain the cost of interruption and communication.