JBoss application server is configured and shipped with a Java EE (Mojarra) implementation. Its the same with the Glassfish application server. To deploy JSF web application on a Apache Tomcat web server one must use a JSF implementation library like Apache MyFaces.
JBoss AS also allows multiple JSF implementations (can configure a default and a secondary, e.g., Mojarra and MyFaces respectively).
Tomcat does not provide any JSF implementation. Tomcat is not a full-stack implementation of JEE and this is one of the stack items that Tomcat lacks. Instead you have to provide your own JSF implementation, and whether you use Mojarra, MyFaces, or some other implementation of the JSF spec - or even write your own - makes no difference to Tomcat. It's all bundled with the webapp's WAR.
GlassFish, Wildfly, and, indeed WebLogic and WebSphere are all full-stack JEE servers*. Accordingly, they must faithfully implement JSF according to the JSF section of the JEE specification. What actual code they use (or invent) to do so, should not be something that JSF applications worry about - only what version of the spec they implement, just as is the case for servlets and JSPs. And, of course, if the vendor decides to switch to a different implementation at any time, it should not change the webapps written for that server.
* Technically, I'm not sure you can call JBoss a JEE server (hence an implementor of JSF). I think the name change to Wildfly happened about the same time J2EE was superseded by JEE, and one of the differences between J2EE and JEE is that J2EE does not define JSF, but JEE does.
An IDE is no substitute for an Intelligent Developer.
Oh, sure, you could do that. Or you could eat some pie. While reading this tiny ad: