Like all
JSP tags, the JSF tags are compiled on the server. In the case of JSF, the actual client-side results of that compilation are created by a renderer. There's a standard HTML renderer for the core tags.
There is no "required" attribute defined in the official HTML spec (RFC), and the JSF HTML renderers don't produce illegal HTML (such as HTML containing non-standard elements). To get around that, you'd have to replace the standard HTML renderer with one of your own construction. And debug it. And maintain it. And keep it updated as new versions of JSF came out.
There are better ways. Ideally,
you should find a JSF extension tagset that supports client-side validations directly. Tags like that would automatically generate the requisite javascript, customize it according to the quirks of the user's browser, and (ideally) even fall back to server-side validation for users who disable javascript.
I don't know if there are any such tagsets, but if there aren't, there should be. If not, you could always create your own by subclassing the standard tag classes. That's essentially the same thing as replacing the standard renderer, but it's a more complete and more durable way of doing it.