I would do this with a named pipe:
mkfifo err
./myscript.sh 2>err | ./reader.sh 3<err
Doing 2>&3 in your attempt just sends stderr to wherever the parent shell has 3 pointed, and will fail if you haven't already opened 3 in that shell. It doesn't do any good for the reader shell's 3; even if inherited, it would be as a write fd, not a read one.