Да, он переносимый, но имейте в виду, что компиляторы MS обрабатывают его "nothrow", который отличается от стандарта ANSI - на этом все горело.
Что касается того, почему, да, отслеживание памяти, отслеживание утечек, распределение отслеживания - это хорошо, но это можно сделать глобально. Вы можете переопределить new / delete для чего-то вроде распределения VRAM, но я обычно вижу подобные вещи, вызываемые в разных функциях. Основная причина переопределения new / delete заключается в том, что вы лучше понимаете, как будет использоваться ваша система памяти, и сможете адаптировать свои функции более эффективно, чем отличные, но универсальные версии new / delete, предоставляемые вашим поставщиком. Распределение небольших объектов приходит на ум как нечто, что часто упускается из виду или плохо реализуется, а также то, сколько информации вы хотите передать с выделениями для целей отладки.