I agree with @gniourf_gniourf, your probably needing write access to create the file descriptors for the HERE STRING.
You could test this by tracing the execution of your command when in the readonly partition.
{ strace -p "$$" & sleep 1; read var1 <<< "hi"; sleep 1; kill "$1"; } The above will run strace on the Bash shell (process $$). It then sleeps for 1 second, and then runs the read from the HERE STRING. I've put the string "hi" in this position. I then sleep for one more second and then kill the strace.
Example
While parsing this output you'll notice that read does in fact open a file for O_WRONLY, which is for writing to.
open("/tmp/sh-thd-4137571604", O_WRONLY|O_CREAT|O_EXCL|O_TRUNC, 0600) = 3