I agree with Bill about small polygons that are "not rasterized sufficiently precisely".
I just had this problem an hour ago. I have a multi-scale grid and I want to compute the flow of a wind field (I have rasters of components) through the edges of grid cells. I am using zonal stat. based on a polygon feature class made of buffers around each edge. When these buffers become comparable in size with pixels of the rasters of wind field components, I have missing entries in the output of the zonal stat.
It is not the first time that it happens to me, and my explanation has always been (don't know if it is correct though): when the zone input data is a feature class, the zonal statistics tool converts the feature class into a raster (polygons are I guess somehow "rounded" to the closest set of pixels). Then it certainly performs a significant amount of raster-raster operations. When (zonal-) polygons are of comparable size as pixels of the input raster, the rounding is first inaccurate and ultimately even cancelling polygons.
It seems to me that pixels of the raster generated by conversion of the polygon feature class are not exactly similar in size as pixels of the input raster though. I performed a test by copying some features that were skipped by the zonal stat. into a new feature class. When I used this reduced feature class as a zone input data, zonal stat. worked well. So my guess is that the pixel size when converting the zone input data into a raster is based on both the input raster and the extent of the zone input data.
To end this "story", my wind field components rasters are obtained by Kriging interpolation from a point feature class (coming from another model). When I observe that the output of the zonal stat. is smaller than the zonal feature class, I reduce the output cell size of my interpolation (until the size of the output of zonal stat. matches the feature class).
Best regards,
Cedric