Ну а с одинарной аллокацией всё плохо мемори-вайз, если объекты большие и активно юзаются weak_ptr.
Я вообще говоря не знал, что стандарт гарантирует одинарную аллокацию для make_shared. Если это так, то это плохо, потому что стандарт не должен делать выбор за пользователя в вопросах оптимизации. Хватит с нас уже std::vector<bool>.