They both seem to accomplish the same thing. What use cases would require one over the other?
Currently, I'm working on some presenter classes. My first thought was to use OpenStruct, but I can't identify a meaningful difference between using a Hash and an OpenStruct.