DLSS's benefit over FSR is that DLSS has trained reference images for the games it works in, thus it is able to more precisely know what the image is supposed to look like in reality. Whereas FSR does not, it's a simple spatial and temporal scaler. Until AMD creates machine learning that is capable of being trained from a reference image, it will always be inferior. Hardware aside, there is nothing wrong with using the compute units for upscaling processes, but of course, if you want to leverage efficiency then separate processing is helpful, just not required. However, in terms of Frame Generation, you most definitely want some form of computation units for that to process vector data provided by the game. Faster flow accelerators, for example, can provide better accuracy in frame prediction.
I am a huge advocate of things like DLAA, however, I think that form of the technology is the way to go in gaming. Every game I play, I use DLAA instead of upscaling, at my native resolution, I love the image quality.
Also, the trope about game dev's using upscaling as a crutch is just not true. For developers, upscaling is the last thing added to a game, they optimize in other ways way before upscaling is added. In fact, a lot of things in games these days are upscaled natively from lower resolution or compressed files in-game engine. The whole idea of LOD is exactly that. A game is never rendered at it's 'native' or uncompressed quality. Part of optimization is figuring out how to represent something of a higher quality, but at a lower cost to resources, so in a sense, everything is 'upscaled' from the native texture size, or polygon count, or mesh size, etc...