Shouldn't the top bit use ?: rather than if else end - that's what the Ruby style guide says anyway.

Anyway, your proposed alternative is missing handling of sipp and ibcf which need to default to 0 if there are no existing nodes.  I also dislike actually changing the config array as that should stay as what was specified (otherwise it will trip up other people trying to do consistency checks on specified options).  I know we already do that if the --subscriber option is specified and I would have complained if I had been the code reviewer for that bit of code.

I'm therefore going to stick with my version but I'll change the ?: bits to a max instead to make it a bit more succinct/clearer - ie.

        bono: config[:bono_count] || [old_counts[:bono], 1].max