they would still be reachable from the reflog though...
"Unreachable" here means "not part of the current branch" (see the documentation). The two settings control how long commits _in the reflog_ are kept depending on whether they are "reachable" or not. If the commits can not be reached from the reflog, none of these settings apply, and only the gc.pruneExpire setting (which defaults to 2 weeks) will be considered.
so it should be a total of 120 days until they disappear by themselves.
Why 120? After 30 days both the gc.reflogExpireUnreachable and gc.pruneExpire limits will have been met, so there is no reason for the commit to be retained any longer.