FYI: I think this is related to the latest rrule release (2.7.0), which was updated when node-ical was upgraded to 0.17.1 (from 0.16.1). It looks like rrule removed luxon with its own self-built replacement… and the behavior changed.
If you sift through issues filed in node-ical and rrule, there seems to be folks also seeing new recurrence behavior. As to why, /shrug…
On my install, I rolled-back to the older version (npm install node-ical@0.16.1) and it seems now to be behaving.