The main practical difference is that the individual shader runners are responsible for invoking the parser with a particular configuration or set of capabilities, as opposed to the parser invoking the runners multiple times for entire .shader_test files.
I was rather confused at framing this as something the "individual runners" are doing since it's not like any runner logic is actually involved here, but IIUC I see now that you mean it should be done within a run rather than *as* an additional run. And yeah, I'm inclined to agree that makes more sense in general.
(As I mentioned in IRC I still don't like the way we currently handle maximum_shader_model and minimum_shader_model, on the grounds of clarity. But yeah, it's not really necessary for sm1 tests.)