Hi Sean,
Thanks for the great question and kind words about the package. Unfortunately, the spNMix() function isn't able to fit a stacked spatial model. At the moment, it will only work when the rows in the "y" matrix correspond to sites (i.e., each row in y is required to have a unique pair of coordinates), and it won't allow for multiple surveys over time for the same site (since the site has the same coordinates over time). As you point out, your data set up is possible for working with the non-spatial function NMix(). The same is true for the distance sampling functions in the package (can fit a stacked model with DS() but not spDS()). You can fit a "stacked" GLMM using any of the abund() type functions, but that likely won't be of any use since you want to fit an n-mixture model. I'm hoping at some point down the road to add in the functionality for stacked (multi-season) models for the N-mixture and distance sampling functions.
There is one workaround that you could try, which is to add a very small amount of noise to the coordinates in the "coords" matrix for the repeated observations for the same site, which will allow the model to fit. It is certainly not ideal and could lead to difficulties in getting the model to converge, but it could at least allow you to explore how much spatial autocorrelation there is to see if you need to move beyond your approach with NMix() or if the non-spatial model is adequate enough.
Hope that helps, and let me know if I can clarify anything.
Jeff