Suppose I have a named list like
somelist <- list(a = 1, b = 5, c = 3)
somelist$b <- NULL
superfluous.variable <- foo(42)
superfluous.variable$b <- NULL
bar(drop.item.from.list(foo(42), item.to.drop = "b"))
You can do that removal on the fly with
replace(somelist, "b", NULL) # $a #  1 # # $c #  3
It works for multiple variables as well ...
replace(somelist, c("a", "b"), NULL) # $c #  3
So just wrap that in
bar() and the original list remains intact.
Note: I am not exactly sure what you are doing with
foo(42) but you state that the resulting list takes a similar structure, so this should be fine for that.