Another less obvious benefit to wrapping behavior in elements is modularization. Similar to asking a module system to provide a behavior, you can create an element to provide that encapsulation.
I can write a function that will perform as task given a service moniker:
document.createElement(service).doTask();
With very slight sugaring, you could create a method like this:
service(<service-name>[, config]).doTask();
The fact that the `service` object has HTMLElement as a base can be ignored if you like, but we are already leveraging namespacing (element names are managed by the system) and we can also take advantage of it's ability to be inserted into a (DOM) tree, which provides a convenient structure for command and control.