Why a fixed offset breaks and IANA names do not
The naive approach is to add or subtract hours: take a UTC timestamp, add -5 for Eastern time, done. It works until March and November, when the US switches between EST (UTC-5) and EDT (UTC-4). At that point every value is off by an hour and the error is silent — no formula error, just wrong data.
Utilities.formatDate accepts any IANA timezone string (the ones in the tz database: 'America/New_York', 'Europe/Berlin', 'Asia/Kolkata') as its second argument. Google's runtime knows the full DST transition history for each zone and applies the correct offset for the exact moment represented by the Date object. You never touch the offset math yourself.
The first time I hit a DST bug in a Sheets automation it had been silently mis-stamping meeting exports for six weeks. Switching the hard-coded '-05:00' to 'America/Chicago' fixed it in one character swap.