Would you mind adding the following method to ReadOnlyProps?

    public Map<String,String> asMap() {
        return props;
    }

Then, how about sizing the map based on the expected new size and initializing it in-mass, like this:

    Map<String, String> existingProps = services.getProps().asMap();
    Map<String, String> tmpAugmentedProps = Maps.newHashMapWithExpectedSize(existingProps.size() + info.size());
    tmpAugmentedProps.putAll(existingProps);
    tmpAugmentedProps.putAll(info); // you'll likely need a cast and a suppress here (and if you can't get it to compile, loop the way you're doing below)