Some architectures like the x86 (32 bits or 64 bits with System V ABI) have only very few registers available. For those architectures it makes a lot of sense to make the frame pointer available as another callee-saved register.
(This mimicks the GCC option -fomit-frame-pointer.)
For this to work, the stack pointer is used to access the locations in the current frame. The value returned by the allocai instruction will be adjusted because it will be relative to the stack pointer, not the frame pointer.