Лично я предпочитаю первый, так как ИМХО "конец"; не говорите мне много, и как только все будет близко, я могу определить по тому, что происходит, когда.
Я считаю, что блоки более полезны при наличии больших операторов. Вы могли бы сделать смешанный подход, когда вы вставляете несколько символов «начало ... конец» и комментируете, чем они заканчиваются (например, используйте его для with и первого if).
ИМХО, вы также можете разбить это на несколько методов, например, часть
if not(RecordExists(currRow)) then begin
InsertNewRecord(currRow);
end //if it didn't exist, so insert it
else begin
UpdateExistingRecord(currRow);
end; //else it existed, so update it
может быть в отдельном методе.