I can't seem to find the explanation for why all r-type instructions have opcode 0 always. Can anybody explain why this is so.

In designing an ISA, there are many tradeoffs that can/need to be taken. This makes it slightly challenging to answer why questions but I will do my best.

In mips I am sure you are aware of the three instruction classes: I, J, and R.

For this explenation I belive only I and R are relevant.

Type    [31-26] [25-21] [20-16] [15-11] [10-06] [05-00]
R-Type  [opcode] [$rs] [$rt]  [ $rd ] [shamt] [funct] I-Type [opcode] [$rs]   [\$rt]  [         imm         ]

First lets examine the implications of using [31-26] for R-Type [funct] information.

This would limit the total number of R + I + J instructions to 64. To increase this field for all instructions would limit the size of immediate values.

Additonaly, [5-0] of R instructions would be freed up but not used, not very efficient. By moving R-type opcodes to [funct] the total possible instructions jumps to ~127, while keeping 16 bit immediates.

Finally, if you notice in the data path below there is almost no cost to moving R instruction opcodes to the [funct] field, and it makes room for future instructions to be added to the ISA.

I hope this helps