I have experienced that gdal shifts rasters. The outputs of gdal_warp are often skewed, have different pixel sizes and so forth. A known error which has also been discussed here.
But now, I had to realize, that gdal_merge also shifts rasters! Well it is only some mm of whole MODIS tiles (pixel size 250m), but I can't imagine what is the reason for it, all layers have the same extent, the same coordinate system and so forth. Why should gdal_merge shift inputlayers and not simply merge or stack them?
gdal_merge -separate -of GTiff -o D:/MODIS_TIF_NDVI_RECTCLIP_YEARLY_STACK/2005_PARAMETERS_NDVI_STACK.tif D:/MODIS_TIF_NDVI_RECTCLIP_SEASONAL_PARAMETERS/2005_SOS_s1 .....]