Why is there a velocity parameter for Note Off Events?
- see wwwar's answer - it's for after-touch
- yes, NoteOn with zero velocity is essentially NoteOff
- this is simply because that is what a lot of MIDI keyboards send out. You can do either according to the MIDI spec. The advantage of using note on with zero velocity is that it can be sent more efficiently if you use MIDI running status
In MIDI note off event velocity can be specified as well, why?
I'm not sure of the intention behind its origins but the classic use-case for note off velocity is a harpsichord — the hammer falls differently depending on the speed of the release and changes the sound. Some sample libraries (usually 'complete'ish ones for specific instruments like piano or violin) include separate "key off" samples. Release velocity can be used to vary the level and length of those samples.
For general synthesis, key off velocity is often patched to an envelope's release time. Release quickly and get staccato notes. Release more slowly and the sound will ring out a bit. Of course, you could map it to any modulation destination your synthesizer supports. Increase the ring modulation on the tails? Why not.