Reasonable ActiveSupport dependency and define_method usage?
1) I believe that depending on popular and stable libraries is not a problem. Though I prefer more opinionated approach: to symbolize_keys!.

2) You define_method looks clear enough, IMHO 

3) You may simplify grouped like this:

def grouped_by(key)
  self.values.flat_map { |type| type[key] }.compact!
end