When to run `check` and `check --with-cache`?

Given this thread says that running check after prune is not required, I’m wondering:

1. When it is useful to run plain check?

One instance I see is if there is a data error (after running again with --no-cache).

Some sub-questions:

  1. Is there any possibility of data loss when running forget or prune if there is some un-checked state inconsistency?
  2. Assuming bit-rot is already being handled, what are common heuristics to determine how often to run check?

2. When is it useful to run check --with-cache?