What about if the worker crashes whilst in the middle of copying over some rows from a number of large Excel spreadsheets? Then when you restart, you need a way to derive the ID from file name + tab name + unique row identifier (for example) because your v4 UUID which you used to identify each row would have been lost in the crash... Generating a v4 UUID for each row can cause duplicates in such scenarios. If your ID for each row is deterministic and chosen based on data which uniquely identifies each row, you don't have this problem.
In some cases, you can solve the problem by clearing rows based on timestamps or tracking the last copied input row but these are often unreliable. There's usually a bit of overlapping data left over from a previous run which you have to re-process and for those you want the IDs to clash.