Maybe a good middle-ground solution would be to defer the reading of
the history file until history is actually used?
E.g. in my examples there was no reading of input from the user, and
there will be many read-life scenarios like that.
Perhaps commands like comint-previous-input could check whether the
ring is not initialized yet and call comint-read-input-ring, rather
than have this call performed eagerly at the end of shell-mode.
Perhaps. I'm not an expert in comint.el; somebody else could do such a
change.
And please note, that according to my analysis sent to Eli the other
message, half of the party (3 of 6 roundtrips) happens in shell-mode. So
we must indicate something in shell-mode, too, in order to suppress the
check for the proper history file name there.