Вы используете пользовательские распределители, когда у вас есть доказательства, что распределители по умолчанию в C ++ недостаточны для выполняемой задачи. Одно из наиболее распространенных мест, где вы можете увидеть это, в разработке игр, где поддержание высокоорганизованной, сжатой памяти помогает повысить производительность. Упомянутые вами распределители - это все способы формирования этих распределений, как правило, с целью уменьшения фрагментации, улучшения локальности ссылок, проблем рабочего набора и т. П.
Редактировать: Мне нужно еще 23 представителя, чтобы комментировать. Я сделаю рефакторинг этого комментария, когда достигну этой вехи, поскольку на самом деле это не ответ, а ваш вопрос слишком широк, как есть.