It's not very fractured, especially in open source as many "common libraries" support most implementations.
It very much helps that there's a single standard that is quite rich (unlike Scheme) which makes for much easier portability between implementations, to the point that somewhat common repeated trope was developers using one implementation for faster iteration and another for deployment (for example, CCL for development and SBCL for faster code in deployment, or CCL/SBCL for development and ECL for target deployment).
It very much helps that there's a single standard that is quite rich (unlike Scheme) which makes for much easier portability between implementations, to the point that somewhat common repeated trope was developers using one implementation for faster iteration and another for deployment (for example, CCL for development and SBCL for faster code in deployment, or CCL/SBCL for development and ECL for target deployment).