Scenario 1 & 2:
All events in RadGrid fires ItemCommand first. Then bubble up that event to a specific event such as SelectedIndexChanged, InsertCommand, UpdateCommand.
Basically, if you want to do something before SelectedIndexChanged event is called, you want to perform that task in ItemCommand event.
Scenario 3:
Scenario 3 just calls the server side ItemCommand event from client side.
It is basically same as Scenario 2 unless you want to perform any client side tasks even before ItemCommand is called at server side. For example, "Are you sure you want to...?"
If you do not need client side features, just simply use Scenario 1 or 2 which is much more cleaner and more maintainable.