TomC: For compile time all you need is the API jar.  So it does serve that purpose.  Also it gives some separation between the spec-mandated public API and any proprietary public API they might want to put in the impl jar.

Jaikiran: No, both MyFaces and Mojarra have the same public API in the API jar.  This API is mandated by the spec.