Technically GLSL allows it, but it’s link-time and a link error is optional if the initializer values are mismatched (ie. only Intel will raise the link error).
If gpu_shader4 or greater is active on the context then defaults are not possible and all values must come from legacy wrappers of the old uniform API or via uniform buffer objects.
Edit: GL_ARB_gpu_shaderX trumps anything defined by GL_ARB_vertex_program or GL_ARB_fragment_program
Yeah, MG could handle this by just setting the values when loading the effect, but our parser is currently not good enough to handle it and we can’t get initializer values through reflection.