You will need to use a custom factor for this. The tricky part is telling the framework what the cardinality of the output is. You can do it by providing two definitions of the output: the first one only defines the cardinality (and
is never used) while the second one provides the intended definition. Here is an example using Binomial:

var x = Variable.New<int>();
var b = Variable.Observed(false);
using (Variable.If(b))
{
x.SetTo(Variable.DiscreteUniform(n + 1));
}
using (Variable.IfNot(b))
{
x.SetTo(Variable.Binomial(n, 0.1));
}

This causes the cardinality of x to be (n+1) which is the correct cardinality for the output of Binomial. Since the factor you are trying to implement is already a mixture (due to the extra mass at zero), you could use the above construction to represent
the mixture and accomplish two things at once. The first definition of x would be a Discrete whose probs represent a point mass at zero, and whose cardinality is n.