From http://en.wikipedia.org/wiki/Stack_pointer#Structure

I am wondering why the return address for a function is placed above the parameters for that function?
It makes more sense to have Return Address pushed onto the stack before the Parameters for Drawline because the parameters are not required any more when the Return Address is popped for returning back to the calling function.
What are the reasons for preferring the implementation shown in diagram above?
The return address is usually pushed via the
callmachine command, [which in the native language’s instruction set] while the parameters and variables are pushed with several machine commands – which the compiler creates.Thus, the return address is the last thing pushed by the caller, and before anything [local variables] pushed by the callee.
The parameters are all pushed before the return address, because the jump to the actual function and the insertion of the return address to the stack is done in the same machine command.
Also, another reason is – the caller is the one allocating space on stack for the parameters – It [the caller] should also be the one who cleans it up.