I tried to fiddle with Label but I can't find an option to resize it according to the text inside. If you know how many lines an option will have, you may be able to create labels dynamically in a script by offsetting them by label.get_line_length() * line_count
, but if word wrapping is enabled I don't see an option to get the number of wrapped lines. So you end up with a compromise with no word wrapping and manual line count for each option.
If you think the feature is missing you can eventually ask for it on Github, however even with it you would still have to do some layout scripting to get what you want.
I tried an alternative: putting labels in a VBoxContainer. It layouts them automatically fine, however word wrapping simply doesn't work, it shrinks the label to an unreadable size :/
Edit: I just opened an issue about word wrapping behaviour https://github.com/godotengine/godot/issues/7679