With the original bug (which JGR has now added a fix for), the dimensions for each sprite section need to match from the point each vehicle section enters a new direction. I think all three of us use Eddi's movement scheme, which means for the 3 vehicles that are part of the chain:
* Vehicle 1 enters a new direction in its "invisible" state.
* Vehicle 2 enters a new direction as a long vehicle, with the second of its intermediate turn sprites.
* Vehicle 3 enters a new direction with the same "section" sprite it will keep until Vehicle 1 changes direction.
To be most correct, vehicles 1 and 2 would need to have the same bounding box and offset for invisible/straight and combined/sectioned respectively. In practice I suspect the second vehicle does not matter for this specific instance as the "combined" sprite is larger than the "section" sprite, so will always be correctly identified as being part of the viewport.
There might be another (rarer) instance where it does matter, which is when the vehicle enters a curve right on the edge of the viewport. In this situation only the first vehicle has changed direction, and the second is still using the smaller bounding box of the "section" sprite. There you would see a brief flicker until Vehicle 2 changes direction and also to the second intermediate turn sprite.
Vehicle 3 doesn't matter in either case, as the only situation in which it could use the wrong bounding box is also one where it is invisible and not displaying it doesn't make any difference.
Now to be very annoying in the context of a fix... at least two of these sets have another situation in which the vehicle bounding box can change (and for long enough vehicles, the same swapping in and out of transparent and combined sprites). And it's not triggered by a curvature change either. On slopes, they also swap to different bounding boxes. Timberwolf's Trains shows this most visibly:
Note if the vehicle is long enough the CETS sprite is also a "combined" sprite at this point, to prevent the vehicle from visibly splitting into 3.
The good news is that the bounding boxes used for these "hill" sprites are similar enough to the intermediate curve sprites you don't see this issue - the vehicle is not split to three at this point. However this behaviour might affect any curvature-based bug fix if you have this situation:
Here the front and rear vehicles 1 and 3 would still be invisible even once all of the directions of the vehicle chain have updated. (I haven't been able to test this against the fixed code, it's only a theory this might present a problem even with the new curvature fix.)
For my own fix I used the idea of a "viewport candidate" - a sprite whose bounding box could potentially overlap the viewport and should receive a fresh `GetImage()` call. I don't think I trust NewGRF authors not to come up with some new and inventive way to break a scheme that is based on people using callbacks in the expected way. But this is not perfect; it can still break if a sprite has extreme differences in offsets, or if we are dealing with a set whose sprites exceed MAX_VEHICLE_PIXEL_X / MAX_VEHICLE_PIXEL_Y - assuming such a thing is possible, I haven't tried to see if OpenTTD will outright prevent you from doing this.