Причина, по которой компилятор позволяет вам делить число с плавающей запятой или двойное число на ноль, заключается в том, что числа с плавающей запятой и двойное число имеют представления о понятии положительной бесконечности и отрицательной бесконечности (и "не числа"), поэтому это значимая вещьto allow.
Одна странность состоит в том, что компилятору не удается спот
decimal d = 2;
decimal d2 = d/0M
как деление на ноль, даже если он находит его, если вы пишете эквивалентный код для целого числа.