Но при доходе до определенного числа скачивания выдает исключение.
Допустим, закончилось место на диске.
Попробуйте обвернуть в try-catch, чтобы узнать причину:
try
{
DownloadZIP();
}
catch (Exception e)
{
Console.WriteLine("{0} Exception caught.", e);
}