A drawback this has is that it stops you from changing your contract with a code that is outside your package. Since you marked your code as global, there could be callers of this code from outside as well that actually rely on the implementation of the al.ObjectComparator interface.
To learn in-depth about Salesforce, sign up for an industry-based Salesforce Certification!