When I run your example in my shell (OpenBSD ksh), I get:
$ ./myscript.rb
ksh: ./myscript.rb: No such file or directory
$ ruby -e 'Kernel.exec("myscript.rb")'
Traceback (most recent call last):
1: from -e:1:in `<main>'
-e:1:in `exec': No such file or directory - myscript.rb (Errno::ENOENT)
@Eregon (Benoit Daloze) is correct, examining the shebang appears to be a bash-specific behavior, not a general behavior. So I don't think this qualifies as a bug in Ruby. It could potentially be a useful feature, though.
In my opinion, the error message I'm being given is a bug, because it's telling me that a file that does exist, doesn't exist. Ruby should double check if the file exists before giving that error message, and if it does exist, give a more generic message that it's not clearly incorrect.