It changes at 00:00 UTC because BarZone is the zone of the bars, not of the historical data. Historical data is expected in UTC with no mixed time zones or resolutions. Only for daily data with daily bars the time zone is not relevant.
You could try HistoryZone = EST before loading the VIX data. It is then converted to UTC and changes at EST midnight. I don't know it this solves the problem, but try it. Otherwise you need VIX data either with UTC market close timestamps, or with the same time zone and resolution as the SPX data.