It's just easier to group the parameters into one input so that you don't have to list them all in each inputs section. It's particularly cumbersome when there are several layers of subworkflows, and all you really want to do is just get the inputs to the underlying tool.
I found that it is indeed possible to pass record types through from workflow to subworkflow, which solves most of the issue. The other part of the issue is getting only the fields from the record that you want for a particular workflow step, and that can be solved with valueFrom:
in:
run_tools: run_tools
java:
valueFrom: $(inputs.run_tools.java_7)
arrg:
valueFrom: $(inputs.run_tools.arrg_path)
Which may not be the best solution. I'm curious what is the load_contents feature you're describing?