The example you gave is obviously superior for the reason you mention, but what about just one where you are mutating the objects in the given list? Isn't the for loop and an if a lot clearer than names.toStream().if(something).then().mutate(thing)?
Sure, I think these things have to be evaluated on a case-by-case basis. Insisting on everything being written in a functional style seems a bit cargo-culty to me.