My guess is that Havertz and Pulisic did nothing in the last game against Arsenal and Ziyech did score the winner in the semi-final. So, I guess it became a bit of a toss-up between the 3 and out of our attackers, Pulisic is arguably the best when it comes to coming off the bench.
If anything, it's probably baffling that Tuchel didn't start with Havertz-Werner upfront and Mount deeper in midfield considering it was working well recently. Werner can be OK at leading the line but he's better off playing off someone upfront.
Kepa played because he has been the cup keeper - something Tuchel has mentioned - although you could argue that Tuchel could have been more ruthless but think there's also some club politics involved in this.
Tuchel said he played Alonso because of his height and experience but he brought Chilwell later on anyway. Chilwell was clearly desperate/motivated to play against his former side. No clue why Tuchel didn't try to harness that. Went with Alonso instead and we had 2 malfunctioned attacks from the wingbacks.