decimal имеет явный оператор сбрасывания до int. object не:
decimal
int
object
decimal d = 10m; object o = d; int x = (int)d; // OK, calls decimal.explicit operator int(d). int y = (int)o; // Invalid cast.