Hi Matthew. How I think about it is that the asset output is the source of truth for the current state of the asset. So re-materializing will overwrite the existing contents; assuming the input is the same, the overwrite will produce the same outputs as before.
So for example, if an unpartitioned asset represents a table, re-materializing would rebuild the whole table. And if you wanted to update your table in chunks, you could represent your table as a partitioned asset where each chunk is a partition, so you can rebuild each chunk independently.