Если вы говорите об использовании памяти, тогда заменить лучше, чем добавить, потому что в add () представления фрагментов (которые находятся в стеке фрагментов) находятся в памяти, и все изображения и представления занимают память, которая не выпущен. Предположим, у вас есть 5 фрагментов A, B, C, D, E. Вы добавили их один за другим A-> B -> C -> D-> E. Теперь E вверху и все фрагменты A, B, C, D их представления и ресурсы загружены в память. Предположим, что у этих фрагментов много тяжелых изображений, и есть вероятность, что вашему приложению может не хватить памяти. Но если вы используете замену для каждого из них, их представления освобождаются, поэтому их ресурсы освобождаются (что хорошо, так как они больше не видны на экране, поэтому не должны содержать ресурсы, изображения и память).
Для получения дополнительной информации Google представил навигацию Jetpack https://developer.android.com/guide/navigation В этом случае, когда фрагменты перемещаются от одного к другому, выполняется замена.
Единственное, что требуется в случае замены, это вы необходимо правильно обрабатывать onCreateView (), поэтому, когда пользователь возвращается к уничтоженному фрагменту, его представления снова заполняются.