The primary difference is that assembly written code will usually take up less space and be faster. This assumes, of course, you have a competent person writing the assembly program.
C compilers make code development much easier and faster, but the code they produce may not be optimized for program size or execution time.
The decision on which to use depends on your needs.
If you are a small business making prototypes and very low volume products, C is by far the preferred language. With such small volumes the cost of a larger, faster processor is of no real consequence - it will be dwarfed by labor costs.
If you are going to make a million units annually of a product, you want to minimize the cost of every part in it down to the tenth of a cent level. The cost of a larger, faster processor is absolutely not acceptable. All this programming will be done in assembly to maximize performance so you can use the cheapest hardware possible.
It should also be noted that the above, while true, overstates the difference between the code produced by a good C compiler and a good assembly programmer. In fact, some of the best code is written in C, compiled, and then optimized at the assembly level. Coding in C and in assembly level are not mutually exclusive. A good embedded systems programmer will know when typing a statement in C what assembly will be produced when using his or her chosen compiler.
Easy example: What's the difference in the code produced when using a switch() statement vs. nested if/else statements? What's the big-Oh performance? If you don't know this, you should probably study a little more before comfortably becoming a C-only programmer.