So, I can't speak to the authors intentions, but I'll do my best to explain the behavior.
As you guessed defined() behaves differently based on what is passed to it. If passed a resource reference, as it is in the module, it will check that that resource has been declared. if passed a string, it will treat it as a type/class name and make sure that the resource has been defined. So, as written, it's checking if a class by the name of supervisor::service has been declared, while the way you write it, it check if anything by the name of supervisor::service has been defined.
The 'include supervisor' you noticed does nothing regarding this error, as the type in question is supervisor::service.
If I had to guess, at one point in the past, supervisor::service was a class, while it is now a defined type, and the module you're working with hasn't updated or something.