Удаляю значит старые записи в таблицах и php парсю xml файлы и вставляю в таблицы соответствующие.
Ну и совершенно закономерно получаете двукратный рост как самой таблицы, так и всех индексов. Всё верно.
Почему? Потому что MVCC. Удаление не удаляет данные, т.к. их может кто-то хотеть ещё прочитать из более старых транзакций, а только отмечает xmax - id транзакции, с которой записи перестают быть видимы. Место занимаемое удалёнными строками будет возможно затем переиспользовать под новые данные после прохода vacuum вручную или автовакуумом.
Индексы, разумеется, тоже занимают место. И по той же самой причине индексы в варианте delete всей таблицы + insert будут занимать вдвое больше места.
Когда вы хотите удалить всё из таблицы - вам нужен не delete, а truncate.