@BrodieOnLinux Actually, you can TOTALLY have it both ways.
Case study.
I use Dino, which is designed around GNOME UI guidelines, which imply CSD. I use it in GNOME, so it uses CSD.
My friend @kafazen uses Dino in SSD environment, namely LXQT. And if the environment is literally incapable of running CSD, the app responds to it by throwing away all the window management buttons out of the header, and letting the server draw whatever decoration it wants to around it. The former header now becomes just an ordinary panel. And it still looks OK. Not *native good*, maybe (if you want it native good, how about using it on the native platform? fresh idea, I know), but still fairly usable.
In well-designed apps built in a well-designed framework this is, basically, a non-argument.