It seems there are other objects that somehow restrict themselves to a 64 size block minimum.
print~ will always start printing from the beginning of a 64 block period
The same here. Perhaps it helps to see print~ as the object that gives you one audio block as numbers rather than an 'audio rate print' that does things faster than message timing.
snapshot~ will always output the last sample from an audio block of 64
This sounded strange at first to me, but it makes sense if you consider that snapshot~'s role is to give you one audio sample from the audio stream. Since you will only receive messages in between audio blocks the last sample in a vector is the one that is closest (in timing) to the point at which you receive the value in the gui.