Having said that, you can easily assign two registers as stack pointers (instead of the normal one) and decide to use one to save link registers and the other to store stack frames, so you could do this if you wanted (and with many other arches too, definitely Power and Arm would support this, although not x86).
It gets worse when you consider that modern languages often depend on glibc too. Example: https://blog.rust-lang.org/2022/08/01/Increasing-glibc-kerne...
But, you can always go the golang route of depending on nothing but yourself. Then you get to decide!
Nothing in the ISA precludes this. It's all about the software stack, and what the compilers do. All you need to do is assign another register the role of data stack pointer and define the ABI to use it.
Even the stack pointer is just a convention in RISC V