The load part has nothing to do with it. The same thing should happen if you directly call weird2.rb with and without an argument.
The effect you're seeing is that gets functions like a unix filter, which means it will read from STDIN if no file is specified, or else the file(s) provided via the command line.
If you're doing some preprocessing via weird.rb, then remove any args off of ARGV via shift before loading weird2.rb, like such:
my_arg = ARGV.shift
# do stuff with my_arg
load 'weird2.rb'