The handle distinguishes each different instance of the "subscribe" call, so that you can always associate a "smartUpdate" call you issue with the originating "subscribe" instance (hence, the item).
Supplying a specific listener object, with its own "smartUpdate" interface, instead of the handle, would have been more compliant with an object oriented interface, but we just couldn't at the moment we introduced it (actually, the handle is the pointer to the internal listener).

In ARI terms, the <ID> element of the subscription request message plays the same role as the handle, in that it has to be specified on each update message related with the subscription request.