If you have proper tail call optimisation, then tail calls are GOTOs with params.
Trampolines allow you to simulate that, even when your compiler / language doesn't handle tail calls properly.