Hangfire uses dedicated threads for synchronous jobs, but async jobs are still executed on the thread pool.
Thread-local variables are working the same way for all threads, be it dedicated or thread pool threads. Once set, they retain their values and are available to any code executed on that thread.
With sync code, it is unlikely you'll need to share values between jobs the worker thread may execute.
With async, the method may continue on another thread, so it is dangerous and error-prone to use thread-local variables.
Avoid using them at all, unless you are 200% sure you need them.