Reach for eventual consistency when availability and low latency matter more than every reader seeing the newest value instantly. Shopping cart contents, social feed counts, view counters, product catalogs, DNS records, and user presence all tolerate a stale read of a few hundred milliseconds without any real harm.
Avoid it where a stale read causes a wrong decision. Bank balances during a transfer, inventory at the moment of checkout, unique username assignment, and anything that must never double-spend usually need strong consistency or a transactional database instead.
The hidden cost is application complexity. Your code must handle reading its own write and getting back an old value, conflicting concurrent updates, and the need for idempotent operations so a retried or reordered message does not corrupt state. You trade server-side simplicity for client-side defensive logic.
There are stronger flavors that narrow the gap. Read-your-writes consistency guarantees you always see your own updates, monotonic reads guarantee you never see time go backwards, and causal consistency preserves cause-and-effect ordering, all without paying the full price of global strong consistency.