TBH I'm not understanding the pushback for adding a way to determine whether the storage parameter is actually set. It's very simple, and it seems like it could be useful elsewhere.
IMO this is superior to using sentinel values for the same purpose, but those already exist and having both is reasonably unappealing.
But more importantly, it allows us to more closely match the behavior of the existing reloptions with GUCs, and it prevents type mismatches (e.g., the reloption is an enum but the GUC is a Boolean).
Good point; we could solve this in documentation by simply keeping boolean if no non-boolean enum values are publicly accessible. But this is part of why having "set/unset" not use sentinel values is better.