The conversion rules for mixing decimals and integers are a little confusing.
results in a double because it has a decimal literal and non-decimal literal argument.
results in a decimal because it has two decimal literal arguments.
Part of the justification for this is that decimal was significantly slower than double, so we didn't want users to see sudden performance regressions. However, we've since improved decimal performance a lot so we should consider revisiting this behaviour.
The relevant code is Expr.convertNumericLiteralsFromDecimal()