The vector<bool> argument is a red herring.
Why? A template with subtlety different behavior based upon what it gets instantiated with is the problem with vector<bool> (and possibly span<T, size_t(-1)>, although that remains to be seen).
optional<T&> does not have to be a full specialization.
Why does it have to be spelled o-p-t-i-o-n-a-l?
When the committee decided to disable reference for optional it should have send red flags that the design was maybe unsound.
IIRC, it was decided because the original paper authors were trying to get optional put into the standard and wanted to avoid the controversial topic of references. I don't see why that should have sent red flags about unsound design.