Very old operating systems used to have a method for password hashing built in that could only handle 8 characters max. The need for compatibility with it, or things that were too zealous in being compatible lingered for a very long time.
It's not good, but some services end up behind firewalls that reject inputs that look like SQL injection. Sometimes they decide it's better to prevent sql-ish passwords than risk some weird fluke.
Sometimes they just say |, I, and l all look too similar and our users are idiots. Which is awful practice.
My personal feeling is that password length should be capped with the length of input the system can handle. Plaintext copy of Alice in wonderland from project guttenberg? Go for it.