I've bisect the code and I found the regression was inserted in svn://svn.code.sf.net/p/freeassociation/code/trunk/libical@1130
For a clearer understanding of the problem, you also can find two calendars attached. The "expected_calendar.ics", was generated using latest libical with r1130 reverted; you can see it is populating VTIMEZONE only with used timezones. The "wrong_calendar.ics", on the other hand, is populating VTIMEZONE with a lot of non-used timezones.
Also, you can find the patch reverting the r1130.
Please, let me know what kind of info I can provide to you to fix it.
Ah, moreover, two related bugs0 were filled against Evolution (and its componentes), both can be fixed reverting r1130.