One reason is that shaders are stored as text and require each driver vendor to write parsers for them and not everyone implements them in the same way.
Ideally games would ship only shaders that are strictly valid GLSL but that's not quite the case.
If you're developing GL, do everyone a favor and start using the official GLSL validator in your build scripts.