That's a surprisingly big difference between Case1 and Case2.
You could also try to do an UPDATE and then an INSERT ACCEPTING DUPLICATE KEYS (which will both result in SY-SUBRC = 4, but will update resp. insert all rows where it is possible) and compare this to the MODIFY and DELETE / INSERT alternatives.
Also think about block processing of say 10K rows each, since 6 million in one go might result in redo/undo buffer filling up (which are tracking all the DB changes in case a rollback occurs later on) and thus longer runtime or even memory problems.
Interesting research, please keep posting your results here (although we hijacked the discussion, I guess...)
Thomas