History

Sure. I think the most obvious usecase is with ERB. If I want to strictly control the available interface to an ERB template a subclass of BasicObject is an ideal way to do. But ERB's result method takes a binding. So that's one specific case I've come across, and I am certain there are others given that both BasicObject and binding are very useful devices in the context of meta-programming.