Разница в том, что ваш второй пример передает исключения вызывающей стороне, в то время как оригинал перехватывает их и возвращает false.Я бы охарактеризовал этот стиль кодирования как «мне все равно, почему он потерпел неудачу, меня интересует только, добился ли он успеха».Что может быть разумным в некоторых случаях (например, попытка загрузить обновление).
Таким образом, ваш код сильно отличается от исходного в этом отношении - вы ожидаете, что вызывающая сторона будет обрабатывать исключения, которых нет в исходном коде.
Кроме того, жалоба компилятора заключается в том, что ветки нетв вашем коде - либо, если работает и результат определяется вторым назначением, либо у вас есть исключение, и Результат не имеет значения.
Result := FALSE; // <--------- Compiler complains
DeleteFile(Dest);
dl := TDownloadURL.Create(nil);
try
dl.URL := URL;
dl.FileName := Dest;
dl.ExecuteTarget(nil);
Result := FileExists(Dest);
finally
dl.Free;
end;