I am not too fond of giving a good ending to every companions just because some people got too emotionally attached to a virtual character. Having a doomed character can be a thrilling element in a story, see Cyberpunk for a recent exemple.
I admit that Karlach story isn't good in that regard though. The only conversation about how doomed she is is put under the rug for the rest of the story until the very end. Larian probably wanted to show how optimistic and carefree this character is, but forgot that this plot point is a core component of her. So people are dumbfounded to find that this unavoidable conflict eventually get "resolved" in the last few minutes of the game. Meanwhile, Astarion reminds us constantly of his condition and his goal. His story feels way more organic because it isn't a big void of nothing until players get hit by it.