Argument order with default value
Yes, varargs and default args obviously conflict, so choose either.  I think the API as it is, with two functions, is fine and it's a good way to distinguish the two cases.  And I wouldn't expect the default value to go first in any case.

You could also consider not using varargs, right?  So getOrThrow(base, steps, default), using an array for steps instead.