And of course it's also opt in as well. Just the default bluesky client does that by default. Any third party client (ex: https://deer.social or https://zeppelin.social) can opt-out of "default moderation". And technically you could use a userscript or even potentially a ublock rule/filter to disable default moderation (just like you can to disable regional moderation or age verification).
This means it's opt-out. Not opt-in.
The reason I said it's opt-in is because moderation is added client-side by including the moderation service's DID in the `atproto-accept-labelers` HTTP header when sending requests to the appview.
So it is by-design opt-in, just in practice the "first party bluesky client" makes the choice for you for legal compliance reasons, and with an increasing hint-hint-nudge-nudge from the devs to use third party or forked clients to bypass the various legal restrictions countries keep trying to impose on them.