I'm sure you can do better by hand than the code generated by the CUDA compiler. But people need something to get started with, and it's probably good enough for a lot of applications. In order to get adoption, the vendor has to meet developers closer to the application.
There are very few people writing assembly code from scratch anymore... and those that do are probably the kind of people who are designing their own hardware anyway!
It makes more sense for the vendor to be writing libraries in assembly, since they know the architecture best. Then apps can build on top of that in higher level languages.