Relays aren't hard-coded and PDSes are encouraged to connect to as many relays as they want. They are essentially network busses that help reduce the combinatorial explosion of connections between nodes. It is entirely possible for PDSes to connect directly to each other if they're so inclined.
It's still a notable bit of centralization present in the protocol - from the documentation presented, it's obvious that moreso than any other "node" in the software, if the relay breaks, that entire chunk of the network stops working. A PDS, a labeler or a feed generator vanishing means very little for the network on the whole, while the relay vanishing causes everything to fall apart.
Similarly, the fact Bluesky is offering a PDS implementation for self-hosting[0] but not a relay[1] tells me that hosting a relay is more than a non-trivial matter, although I'd love to be proven wrong there.