There is no breaking change, client_disconnect() is still there. You will just get a warning if you try to compile with it.
One of the others reasons is that it uses gamedata. When the PR has been made, reHLDS was around but not officially supported yet (a lot were using it already). For such core forward, relying on gamedata by default at this point, it would create unnecessary issues with users. In the end, it was just safer and more convenient overall to create something new.
Well, I'm not saying that was the right answer, we just tried to figure out what would be the best in this context. The params are just extras because passed already in SV_DropClient. It could be useful for some people (someone actually made a plugin:
https://forums.alliedmods.net/showth...=SV_DropClient).
I agree, though, replacing totally _disconnect() and having a native would have been an interesting solution. Back then, I'm not sure we (I and Nextra) thought about it, but it would not have been reasonable I believe. We lack people who can give their thoughts, sometimes weird things happen. Like _disconnected() should have been called _disconnecting() since you are still valid there, it's silly, but no one has been triggered, too late now. There are a lot of skilled people around the forum, but almost no ones contribute on Github.
__________________