> Updating rows of text data is going to be more work, because variable-length text can't be updated in-place.

If we're still talking postgres, it doesn't update in-place. Update is implemented as delete+insert (where delete is updating metadata so the row is still around for still-running transactions but invisible to future transactions).