config_for is better because it signals that you are doing non-standard configuration reading (i.e. you are loading a file, not reading directly from the Configuration object). The syntax you are suggesting will require we mess with the method_missing behavior to either read from config hash or read from a YAML file, depending on “x”.
So config.for.redis.host vs. config_for(:redis)['host'].
Number 2 is a clear winner for me. Much cleaner, does not require metaprogramming to be implemented (method_missing or define_method) and is much simpler in the implementation.