Though IMO Zinchenko EARNED the starting position for this season based on what he did last season.
Cancelo was first choice in 8 out of 9 months last season. Zinchenko wasn't, even though he did very well. Note that Cancelo started in the league cup final and 3 days later in the 1st leg vs PSG. That was in late April. Zinch displaced Cancelo in the final weeks of the season because Cancelo lost form. Imo, that's the reason why Zinchenko started the CL final, not because he outperformed Cancelo over the course of the whole season.
Zinchenko is very useful and has been an excellent servant to the club, but when Cancelo is on form, Cancelo is better. We are lucky to have both Zinchenko and Cancelo.