If I want to set up the CloudImageService to be used with two different prefixes, it seems that ImageProcessor is not able to fetch the configuration for it.
When fetching the settings in ImageProcessorConfiguration.cs, it uses the name of the type:

But you can supply any name you want in the config:

Is this intentional, or is this a bug in the ImageProcessorConfiguration?
Good spot! I would say that's a bug. Services should be reusable.
I encountered the same issue.
As a workaround, you can define a new class inheriting from the service that you want to duplicate:
public class CloudImageService2 : CloudImageService {}
and reference it in your config:
<service name="CloudImageService2" type="Your.Namespace.CloudImageService2, YourAssembly">
Bad news I'm afraid...
The only way I can fix this is to change the IImageService interface which I cannot do without a major version and I doubt there will ever be a V5. (What with the excellent progress of ImageSharp and the move to netcore) so I'm going to close this as wontfix but document the workaround in the ImageProcessor docs.
Most helpful comment
I encountered the same issue.
As a workaround, you can define a new class inheriting from the service that you want to duplicate:
and reference it in your config: