I might be naive on the Selenium2Library keywords offered, but I'd assume it can't possibly offer/expose as keywords all the interesting things you can do in native javascript, to which you have to write up the javascript code and execute that with Execute Javascript keyword.
There are cases where due to current browser bugs/limitations or for whatever reason, the web app doesn't interact well with the native Selenium methods, so you have option of either not testing around those areas or use (dirty?) javascript workarounds to perform/simulate the action. That along with sometimes wanting to do additional test coverage that can only be done right now by calling javascript (like checking if an image has "rendered" or displayed on the browser, not just that the element/tag is loaded in the DOM as it could be a broken image icon).
I don't know if any RF/Selenium2Library user has come across such issues, but I have though I'm not an RF + Selenium2Library user. In such cases, I'd pass a reference of WebElement to the javascript call as an argument using find_element_by methods from native bindings rather than look up the element in pure Javascript since it's more flexible using the Selenium methods.
Until we never have to have a need to pass WebElements into javascript or where javascript lookup of web elements is real easy like with Selenium methods (for all types like link text, partial link text, XPath, CSS, ID, name), being able to pass a WebElement to Execute Javascript would be a nice feature to have (if it was technically possible).
Here's a blog post highlighting some examples where you would want to pass in a WebElement to javascript (or you can alternatively do the element lookup in javascript I guess):