The stack is allocated as part of the loading procedure, after the process is mapped into memory. Its reserve size plays a part in where it can be placed in memory. The location of the stack is not fixed, but ends up with a common value when the stack size and process image base is the default size. It's simply the result of a memory allocation function, which finds the lowest location in memory that can satisfy the request.
Since the stack grows downwards, ESP initially points to the top of the stack. When the process starts, EBP is saved on the stack, ESP is moved into EBP, and then some space is allocated for variables which are stored on the stack. Thus, ESP is set to the new value of EBP less some bytes. The number of bytes depends on how many variables Windows needs to store. The number is essentially fixed, depending on the version of Windows (different versions of Windows require a different number of variables for process loading), but can be changed at any time by a patch, if ever additional information is needed to be used to start the process.