The way decentralization works on Bluesky is similar to how the web itself works.
The part that's decentralized is users' storage of data — anyone can host it themselves (we provide both a Docker image of a server that can do that, and the source code for the server, and a spec in case you want to write your own).
However, applications (such as Bluesky) are centralized in the sense that there's just one instance of each application and it can make choices about how to aggregate the decentralized data from the network. A useful analogy is how Google crawls the web into its index but can present stuff from its index according to its own rules.
In this case, quote posts removals don't remove anything from the user repositories (you can't remove data from someone else's repository just like you can't remove data from someone else's website). Rather, when you detach someone's quote, you're putting a record into your repository (declaring the intent to detach it). Our app (both server and client) respects that intent and displays it accordingly.
Indeed, other clients could choose to not respect that, but the default behavior for most users matters a lot — and in general good faith clients try to be well-behaved and align with users' expectations.