A piece of Java malware can probably perform most, if not all, of the functionality that a piece of C malware can perform.
However, there are a few features of the Java language that probably make malware authors lean towards the likes of C.
Java Virtual Machine Required
A Java program cannot execute on a computer unless a Java Virtual Machine (JVM) is installed on that computer. Writing your malware in Java automatically limits you from any target not running a JVM.
This is different from C or other languages that may be compiled to a native executable that will run on the target system without any additional software.
This doesn't entirely discount Java as a programming language of choice for would be malware writers however, especially if they were planning on spreading via one of the many Java runtime environment vulnerabilities
Java Virtual Machine Limitations
This JVM requirement can also make it a lot more difficult for a malicious Java application to hide itself. It is relying upon the user's installed JVM; all they need to do is remove that and they will stop the malware in it's tracks.
Cross Platform Compatibility is not that simple
By now you may be thinking "Yes, but isn't it all worth it, to have your malware magically work on all platforms?"
Whilst Java is indeed cross platform compatible (as long as a JVM is available) this might not necessarily mean what you think it means.
For example, a common feature of malware is the ability for it to start when the operating system starts. Java doesn't not provide a cross platform
startWhenComputerStarts method. So this would still need to be implemented separately for each platform.
Alot of malware will use platform specific bugs or features to hide itself, launch itself on startup and snarf user data. So the author would still have to do this work for each platform!
Also, let us not forget that C code can be compiled to multiple different platforms. Java's advantage over C is that it can be compiled once and run anywhere but the same C code can still ultimately run on different platforms - just with 1 extra step.
If you think about it, considering that malware is often picked up through signatures, it would make more sense for the author to write individual pieces of malware for each platform. Making detection less likely.