All programs use the "available" CPUs. If there are enough simultaneous tasks (threads) to use more than the physical CPUs then there can be a benefit from hyperthreading. Transcoding a video can benefit from hyperthreading. The software can allocate double the number of worker threads. Even though the CPU is "over subscribed", the I/O that the threads have to do keep the CPU from being overwhelmed.
I don't think that BF3 benefits significantly from hyperthreading (just from a quick Google search)....