What's the difference between caml_alloc(1, 0) and caml_alloc(1, 1)?

What’s the difference between caml_alloc(1, 0) and caml_alloc(1, 1)? Last argument is the “tag”. Docs says:

0 to No_scan_tag−1 A structured block (an array of OCaml objects). Each field is a value.

A tag lower than No_scan_tag indicates a structured block, containing well-formed values, which is recursively traversed by the garbage collector.

This does not really explain the use-case of tag numbers, at least not for me.

You may find it helpful to read this chapter of Real World OCaml (specifically the “blocks and values” section): Memory Representation of Values - Real World OCaml

It explains the memory representation of OCaml blocks (which is what caml_alloc allocates), and the role of the tag value in the runtime and garbage collector.