@JaredPar has the best answer, IMO, but none of the answers are great, because today there aren't any "great" solutions for this. We need better tooling, and design guidelines that evolve in concert with the tooling, to better deal with the rising popularity of immutable objects.
@JonSkeet's answer works well in an API context where nearly everything is mutable, but it falls down as immutable objects become the norm (as all the methods have long awful names).
The "best" name depends on the code context you're surrounded by. The only strategy that I think is viable across the spectrum of "mostly mutable" to "mostly immutable" contexts is the one Jared mentions, where the tooling makes it obvious whether a given object is immutable, and then every method has the 'imperative' name (e.g. o.Add) which either side-effects the receiver object (if it's mutable) or returns a new object (if it's immutable).
(Aside: sadly, "fluent" effect-ful APIs like "StringBuilder" mean you can't just look at the method signature to decide if the receiver object immutable, as such examples 'return this' to be fluent, giving the same signature as 'return a copy'.)