Vacuuming is such a complex task in optimize in Postgres. Depending on your access pattern you will need to also configure index with conditions and/or partitioning (on top of sane vacuuming settings).
And when you realise that Update is the same as Delete+Create it adds up to the confusion.