What would be the point of using normalized values here? Filtering between texels is not allowed for multisample textures, as filtering doesn't make sense when a texel can have multiple values. Since you can only access specific texels, and specific samples within those texels, they figured there's no harm in forcing you to be specific about exactly which texel you want.
Could they have allowed normalized values? Sure. You can do that yourself like this:
vec4 textureMS(in sampler2DMS tex, in vec2 texCoord, in int sampleIx)
{
ivec2 textureSize = textureSize(tex);
ivec2 texelCoords = ivec2(textureSize * clamp(texCoord, 0.0, 1.0));
return texelFetch(tex, texelCoords, sampleIx);
}
But that requires the implementation to provide the texture's size, which probably means passing it as an internal uniform or something. That just makes things take longer. Since you can do it yourself reasonably easily, they only provided the fast way. That way, people who can use the fast way don't accidentally get trapped by the slow way.