Es solo un tamaño predeterminado. Si necesita más, puede obtener más, generalmente diciéndole al vinculador que asigne espacio de pila adicional.
La desventaja de tener pilas grandes es que si crea muchos subprocesos, necesitarán una pila cada uno. Si todas las pilas asignan varios MB, pero no los utilizan, se desperdiciará espacio.
Tienes que encontrar el equilibrio adecuado para tu programa.
Algunas personas, como @BJovke, creen que la memoria virtual es esencialmente gratuita. Es cierto que no es necesario tener una memoria física que respalde toda la memoria virtual. Tienes que poder al menos dar direcciones a la memoria virtual.
Sin embargo, en una PC típica de 32 bits, el tamaño de la memoria virtual es el mismo que el tamaño de la memoria física, porque solo tenemos 32 bits para cualquier dirección, virtual o no.
Debido a que todos los subprocesos de un proceso comparten el mismo espacio de direcciones, deben dividirlo entre ellos. Y después de que el sistema operativo ha tomado su parte, quedan "sólo" 2-3 GB para una aplicación. Y ese tamaño es el límite tanto para la memoria física como para la virtual, porque simplemente no hay más direcciones.