Смысл в регистрах — так сказано в ABI. Для коротких функций это даёт выигрыш при передаче аргументов. Для длинных оверхед от сохранения будет незаметен.
в своих функциях можешь не сохранять параметр в стек, но если регистр где лежит параметр будет изменяться и в дальнейшем использоваться этот регистр, то тут ты и должен сохранять параметр в теневую область