I have found a bug, probably as old as $$ itself, where event-specific identifiers are not being seen if they are $$ prefixed. Is this the issue you are referring to?
Yes, event-specific identifiers is what we call local identifiers. As usual, it's possible to create a script that will break if $$ is modified, but the point is moot as that script would not be making any sense, I don't see the point in not fixing it.
While I understand that $chan is not set 'by' the on input event, but that it is 'by' the on text event (if applicable), I don't understand why "there is no way to set $chan correctly".
$chan is actually set correctly as far as the scripter is concerned, even if the name should have been different inside events, practically speaking the functionality is there.
What would having $chan being set by the on input event rather than because it represents the active channel window change compared to the current behavior? As far as I know it would not change anything, so I don't understand why $chan needs to change inside on input.
As discussed before, changing this would break scripts. And without changing this, there is no way to set $chan correctly.
I'm sorry, I've read the part about $chan carefully and I do not understand why either the difference in 'setting' of $chan (set by the event or not) or the fact that irc events trigger with the status window as the active window for the event would play a role in how $$ can be improved to work with $chan. Once you fix $$ to work inside remote event, why wouldn't $$chan works inside on text or on input?