Date properties in VTIMEZONE components (e.g. DTSTART for an Observance) are expressed as floating datetime properties. RFC5545 section 3.6.5 says:
"DTSTART" in this usage MUST be specified as a date with a local
ical4j 1.0.3 interprets these floating datetimes in the JVM's default TZ, however - *not* as a UTC timevalue displaced by the TZOFFSETFROM offset, as implied by the RFC and used by the tzurl.org Olson ICS files. As a result, the textual value of the DTSTART property (and others) get mangled by the canonicalisation rules for your JVM's local timezone (e.g. "19810329T020000" when floating in Europe/London gets stored as "19810329T010000"). This then breaks all subsequent observance calculations.
Instead, these datetimes should be considered floating in a pseudo "UTC+TZOFFSETFROM" timezone. However, it's unclear how the current DateTime class allows you to achieve this.