Первый закон оптимизации: не делай этого. Второй закон: не делайте этого, если вы на самом деле не измерили и не знаете точно, что вам нужно оптимизировать и где.
Только если объекты действительно дороги в создании и если они действительно могут быть повторно использованы (вы можете сбросить состояние с помощью только открытых операций во что-то, что можно использовать повторно), это может быть эффективным.
Два упомянутых вами преимущества не совсем верны: выделение памяти в java составляет бесплатно (стоимость была близка к 10 инструкциям процессора, что ничего не значит). Таким образом, сокращение создания объектов только экономит ваше время, проведенное в конструкторе. Это может быть выгодно с действительно тяжелыми объектами, которые можно повторно использовать (соединения с базой данных, потоки) без изменения: вы повторно используете то же самое соединение, тот же поток.
Время GC не уменьшается. На самом деле это может быть хуже. С движущимися ГХ поколений (Java был или был до 1,5) стоимость прогона ГХ определяется количеством живых объектов, а не освобожденной памятью. Живые объекты будут перемещены в другое пространство в памяти (это то, что делает выделение памяти таким быстрым: свободная память непрерывна внутри каждого блока GC) пару раз, прежде чем быть помеченным как old и перемещено в старшее поколение пространство памяти.
Языки программирования и поддержка, как GC, были разработаны с учетом общего использования. Если во многих случаях вы отказываетесь от обычного использования, вам может сложнее читать код, который менее эффективен.