Why can `any Shape` not conform to `Shape`

Existential types don't have self-conformance, at least not yet. The topic was raised many times though (e.g. here).

You may want to take a look at Moving between any and some to fix your problem.
func flip(_ shape: some Shape) -> some Shape will work.