Because in your (artificial) scenario, you are pumping 1000 requests for updates to the main thread.
No time is required for the downtime of the cycle (it is necessary to update the screen).
But (thanks to TerrorAustralis), you should start by merging the bgWorker_ReportProgress and myProgressReporter methods. You are now syncing twice, which is a possible cause of stackoverflow. Sending UpdateProgress events is one of the main functions of Backgroundworker:
private void bgWorker_ReportProgress(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = progressPercentage;
}