There is a good reason to limit the hardware access from a web site; security. The less a site can directly access the less damage malicious code can cause. One could argue that there is too much access already via the browser to cause mischief so adding more access should be non-starter.
Cross platform code can be written using the JVM and more most applications whatever performance penalty this might incur is probably noticeable to the user. One problem I have seen with a web app is they can be browser dependent and even worse browser version dependent; I see that at work.