sample_prior_predictive does not request all the draws at once. It will request each draw with the size of your RV (which in your case is (1000,2)), one at a time. By default you should end up with something like (1000, 1000, 2).
You can try to call pm.draw(ddm) to debug more quickly. That should return you one draw with the same shape as observed if you implemented it correctly.
Also you may have a multivariate RV (if that last dimension of length (2,) are not just independent RVs following the same distribution), in which case you must tell PyMC/PyTensor that ndim_supp=1. In that case PyMC will ask you to return draws with size=(1000,), and not (1000, 2). The shape should still be (1000, 2). You can read more about it here: Distribution Dimensionality — PyMC 5.6.1 documentation