> It's always seemed hand wavy and issue prone compared to just requiring

Are you talking about rails autoloading or ruby's?  They are entirely different.  I really, really dislike rails' autoloading but really like ruby's.  What issues have you seen?  We already use autoload pretty heavily:

https://github.com/rspec/rspec-expectations/blob/2c660a794db56cc4aeef3354359675a5eddbde0b/lib/rspec/matchers/built_in.rb

...and I've used it in VCR since the first release:

https://github.com/vcr/vcr/blob/e1e8231cef87682ccc39d6893eff071bae2419e7/lib/vcr.rb#L25-L36

...and I've never heard of any problems from any users or any contributors.  It's also used pretty heavily in libraries like faraday:

https://github.com/lostisland/faraday/blob/212278c33977c37e3940c52dc0dea291c75f14de/lib/faraday/autoload.rb

All that said, it really isn't a big deal to keep the require-then-reference-constant mechanism.  I just want to show you that autoload is pretty awesome :),