Your original problem is that you're not substituting commands in the way that you want to. If you're using bash, you can accomplish this with process substitution:
...
-stim_times 1 <(sed -n '1,1p' ./Onset_Sub"$subj"/Main1.txt) 'BLOCK4(0.8,1)' -stim_label 1 Event1 \
...
The "<(command)" syntax runs "command" in a separate process, and sends the output to a pipe. Then the "<(command)" expands to the name of that pipe, so that when the shell starts 3dDeconvolve it sees a file name there, opens it, and reads the output from sed that's getting piped in, exactly the way you want.
Unfortunately this functionality is not very portable; in particular, it doesn't exist in tcsh.