Isso o que você está querendo provavelmente não vai funcionar. Quando você faz
def a = 10I;
def b = 10L;
def c = 10G;
Usa-se o método DefaultTypeTransformation.castToType(object, type) para transformar o 10I em um Integer, 10L em um Long e 10G em um BigDecimal. Portanto quando você tenta
Decimal d = 10;
// ou
Decimal e = 10 as Decimal;
O mecanismo de conversões do Groovy não consegue encontrar nenhuma condição que satisfaça a transformação de um numérico para seu tipo personalizado e daí vem seu erro.
Contudo, você pode tentar isso:
def f = new Decimal(10);
println(f.class); // com.acme.Decimal
Que vai funcionar tranquilamente, com um porém. Se você fizer alguma operação aritmética com a variável f, o tipo da variável vai mudar de com.acme.Decimal para java.math.BigDecimal, porque os operadores aritméticos foram sobrecarregados para suportar apenas BigDecimal e não seus prováveis sub-tipos.
println(++f); // 11
println(f.class); // java.math.BigDecimal
O que fazer? Você pode criar um wrapper, em Groovy, do seu tipo personalizado e sobreescrever, entre outras coisas, métodos como add, divide, etc… Lembre-se de fazer este seu wrapper estender java.lang.Number. A chance disso funcionar é grande (desculpe, não testei aqui para verificar). Acho que é isso.