Even though multi-core processors have existed for awhile now, a lot of applications aren't written to take advantage of SMP (Symmetric Multiprocessing). This is likely due to the complexity introduced when trying to take advantage of SMP, both in design and debugging. Wikipedia explains:
... a multi-core architecture is of little benefit for the application [when a] single thread [does] all the heavy lifting, [or when it is unable] to balance the work evenly across multiple cores.
Programming truly multithreaded code often requires complex coordination of threads and can easily introduce subtle and difficult-to-find bugs due to the interweaving of processing on data shared between threads (thread-safety). Consequently, such code is much more difficult to debug than single-threaded code when it breaks.
Dota 2, like a lot of games, appears to be one of those applications that doesn't take advantage of SMP.