sp を bp (ebp, rbp) に退避するのは元から ABI の要求に含まれてない。
ABI はインターフェイスの規定なので呼び出し側にとって sp のつじつまが合っていればどんなやり方で実現してもどうでもいいから退避のやり方までは規定する必要がない。
bp を使っていたのは単なる慣例。

スタックトレースのやりやすさとかの都合で今でもデバッグモードではごく普通に bp を使うし、無用になったというわけでもない。