The following should work for one dimension (work in terms of you can initiate the model, but the sampling is still stuck with Metropolis):
sparsity=1 #not zero
beta=np.ones(4,) #input for dirichlet
with pm.Model() as mod:
theta=pm.Dirichlet('theta',beta/sparsity)
transition=pm.Multinomial('transition',10,theta,shape=4)
The failed of Metropolis in high dimension is somehow expected, and in your model if Multinomial contains observed value it should sample using NUTS without problem. If you just want to simulate data, it might better just use scipy.stats random