While SYCL is a standard, some implementations are better suited for some devices and it makes sense in a full platform to take advantage of multiple SYCL implementation in the same C++ program.
While in OpenCL ICD it is managed with dynamic libraries and proxy functions, in a higher-level language like modern C++ it could be managed with namespaces, generic programming, concepts...
After this first step we can think about some other extensions, such as how to share buffers between implementations (we have already mutex that could be used for this), how to mix dependency graphs...