make_shared allows the shared pointer to be constructed with its memory and metadata in a contiguous block. This improves cache efficiency and locality and mitigates heap fragmentation. Although make_unique primarily serves to improve readability, make_shared can reduce smart pointer performance overhead dramatically.
See http://stackoverflow.com/questions/24779929/what-happens-whe...
You are right in pointing out that the library determines whether using make_shared will improve performance.