As fun general rules of thumb:
Hard 8 character limits are often a side-effect of old COBOL "databases" in the backend somewhere.
Hard 16 character limits are sometimes a side-effect of old versions of Active Directory in the backend somewhere or new versions of Active Directory in certain backward compatibility operation modes/certain group policies.
Hard character limits in general are often a sign that someone is storing the plaintext somewhere they shouldn't be.
(Soft character limits today are mostly to avoid possible hash function DDoS.)