Also relevant to this behavior is the LSP client's insertReplaceSupport capability property (see https://microsoft.github.io/language-server-protocol/specification). If the client has that capability, the server is supposed to return two edit ranges; one for inserting the completion and one for replacing existing text with the completion.
@zikaeroh I generally agree. However, it seems that according to the LSP spec, supporting insertReplaceSupport seems to be the way that the server would ideally resolve this preference between users (or even each given completion selection).
Sorry, I failed to read the second part of your comment 😊