It's a stack-efficiency hack, a way to rewrite your (mutually) recursive functions such that the compiler knows it can reuse stack frames instead of growing the stack at every function call. This breaks some debugging methods, but the fact it allows a lot of code that would otherwise blow out the stack to run has made it worthwhile enough for the Scheme people to mandate it in the language standard.
You do this by making sure nothing is waiting for the result of the last function your function calls; its return value is your function's return value.