I think you’re miss understanding the difference between executing at a time vs providing a serialized timestamp. Almost all coding languages handle time based on your locally set TZ. Deep deep deep under the hood they use unix time, but when you request the time, it most certainly will be local unless you specify UTC. When you look at automations or scripts or traces, they have serialized timestamps that are UTC, that does not mean the system does things based on UTC. That just means HA stores the values in UTC so that it can be easily translated in the frontend to whatever timezone your user sets.
Your TZ doesn’t change. Only your DST. That’s how python works. It just adds or removes the offset for your TZ.