I think you are partially right in '?'.  This can easy implemented, however I think it can drive us into the deep in woods and aim a really complex analysis which parameter (and/or which value if we have same name in different, but related line) belongs which test case(s). E.g.:
"Params":[
"querya.ecl:param1=value1",param2=value3",
..
"query?.ecl:paramX=valuex"
"query*.ecl:other=value1"
"q*.ecl:another=valueX"
]

In this case “querya.ecl” gets stored parameters
- "another=valueX" from “q*.ecl”
- "other=value1" from “query*.ecl"
- "paramX=valuex" from “query?.ecl”
- and finally "param1=value1",param2=value3" from “querya.ecl”.
What will be the parameter set of “queryb.ecl”?
I'm not convinced we want to this, especially in batch execution which is the regular usage of Regression Suite.

One more thought about the flexibility. I would like to avoid "well documented" JIRA based on user "awareness" when accidentally there is two "querya.ecl:param1=value1",param2=value3", in the Params array. One in somewhere at the beginning and the other somewhere far and  the second is a “little bit” different like this:"querya.ecl:param1=other_value1" and the user makes noise "the RS is wrong because it generates 'other_value1'  for param1 instead of 'value1'.

However if it has a real meaning and/or business value, I can do it.