Only at connect, to determine offset? or not only?
All the time. Zorro makes many, many calls to BrokerTime().
If MT4 broker time is UTC+3 and my computer is in UTC, then how will historical bars from MT4 be timestamped with this patch? as if they were UTC?
Ask the plugin writer - this is implementation-defined.
What will happen if MT4 does not "provide" server time? Is there a way to set/override time manually to the required one - so that it works reliably 100% of the time in a given broker-user_trading_server setup?
MT4 does provide a server time. In the event that a server does not, it's as if the patch was being used.