It looks like you've only disabled things for the legacy `should` syntax, and not for the `expect` syntax at all.  Also, doing this in each method is error prone.  Instead, I think there's a far simpler way to make this work:

* Rather than setting a `usable` flag, replace `RSpec::Mocks.space` with an object that implements `proxy_for` in such a way that it raises a useful error.  All rspec-mocks mocking/stubbing methods ultimately go through that to get a proxy so it can be centralized.  You wouldn't have to litter all these methods with checks like this.  Polymorphism FTW!
* That actually opens up an interesting possibility: rather than setting a generic message for when rspec-core is not loaded (as I recommended above), we could have rspec-core take care of replacing `RSpec::Mocks.space` with the object that raises an error for `before(:all)`.  Then the message can be as specific to rspec-core as we want :).
* There's also the issue of stubbing constants and and `any_instance`: we'll have to figure out how to make those interact well with all this.