So after some expirementation, I found that calling
GetTree().SetScreenStretch(SceneTree.StretchMode.Mode2d, SceneTree.StretchAspect.Expand, aspectRatioSize);
GetTree().SetScreenStretch(SceneTree.StretchMode.Mode2d, SceneTree.StretchAspect.Keep, aspectRatioSize);
(I'm using C#, but this should translate to GDScript pretty nicely) caused the changes to be applied and allowed the user to select the render resolution at runtime.