Simply replacing 'rm' with a no-op or error command (or removing it entirely) would break scripts. Trash can would not.
You're right directly it wouldn't break scripts; a whole bunch of stuff starts breaking once the disk fills though.
It wouldn't necessarily - it just has to be 100% transparent. A simple alias would probably break a lot of scripts, but if you were very thorough or provided an entirely separate tool for users - that's what I'm suggesting would do this. In reality, I was really just thinking allowed - I think rm's fine as it is. To do this while overcoming the shortcomings I mentioned in DOS's simple approach requires a system more complex than the original problem is worth, IMO.
I've seen a script that uses flock and rm, it would break.