The biggest problem is likely complex variables in the variable table (nested arrays which become serialized). Here is a solution for changing only part of a complex variable: http://groups.drupal.org/node/52588#comment-144213 (if this doesn't work or is awkward, i have a similar solution that i can dig up, but i believe mine is less robust).
I think drupal_array_merge_deep() may be the function we want to use in these cases.