Hello! The tricky thing to understand is that scrub has a very specific purpose: to delete tags that beets does not support. It does this by removing the metadata for the file entirely and then rewriting the tags beets knows about. This can help get rid of crufty tags that beets has no reason to expose as a standard field.
Both zero and --from-scratch affect tags that beets can see and change under ordinary circumstances, such as with a beet modify invocation.