Состояния спецификации JVM,
Поскольку стек виртуальной машины Java никогда не обрабатывается напрямую, за исключением кадров push и pop, кадры могут выделяться кучей.Память для стека виртуальных машин Java не обязательно должна быть смежной.
Эта спецификация позволяет стекам виртуальной машины Java иметь фиксированный размер или динамически расширяться и сжиматься в соответствии с требованиями вычислений.Если стеки виртуальных машин Java имеют фиксированный размер, размер каждого стека виртуальных машин Java можно выбирать независимо при создании этого стека.
Я думаю, что используемая вами jvm поддерживает динамическое расширение стеков,Когда цепочка вызовов становится больше, чем начальный размер стека по умолчанию, кадры стека будут выделяться из кучи.Это приведет к замедлению выполнения.
И случай Вы задаете размер стека с помощью параметра, возможно, стек работает в режиме фиксированного размера.В этом случае все пространство будет выделено заранее, и никаких новых выделений не потребуется.Также, когда вы задаете низкий размер стека, он не расширяется и выдает StackOverflow, это также показывает, что он работает в режиме фиксированного размера.
Поскольку вы не упомянули реализацию JVM, которую вы используете, это только мое предположениена основе информации из спецификаций JVM и вашего варианта использования.
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5.2