Assembler doesn't take up less space except in certain cases. The main benefit is that you have full control over the hardware.
There are cases, such as certain watchdog, windowed-write, or interrupt-routine applications, where the number of cycles must be controlled very exactly, and with assembler, you can do exactly that.
There are also cases where specific instructions have no equivalent in C, and you must use assembler for that reason. Typically, you implement a C-style function interface in assembler, and call that function from C to get access to the special instruction.
Use assembler when you cannot get what you want in C. Otherwise, use C.