Yeah, it should be strictly required because you need to specify what you're opting into. It could be that you're opting into a declaration that's simultaneously using opt-in features from two libraries, like using an experimental vector type containing experimental decimal floating-point types. If you then just slapped [[opt_in]] on that, you wouldn't make a conscious decision into opting into anything particular. [[opt_in]] would just become a means of silencing a warning without really concerning yourself with how many warnings were raised, where they came from, and for what reason the sources raised those warnings.
My examples are mostly thinking out loud. I think you would want something like a qualified-id, similar to attributes, so you could [[opt_in(gnu::libstdcxx_extensions)]] for libstdc++ library extensions.
And again, just because you opt into libstdc++ library extension doesn't mean you opt into the rest of the universe, so you should be required to provide that qualified-id.