The way that Google Analytics calculates average time on site is by subtracting the timestamps between the first and the last pageview of a visit. If a visitor to your site bounced, they by definition only had one pageview. Therefore it is impossible to calculate an average time on site for visitors that bounced because they did not have a second pageview. There is no way for Google Analytics to know exactly when a visitor left the site since no information is sent back to GA when the visitor closes their browser or navigates to a different site.
In the case a of a bounce, GA assigns a time on site of 0 seconds and then averages that in with the time on site for all other visitors that did not bounce to calculate an average time on the site.