よく誤解されるのですが、atomはステートの定義であって、atomオブジェクト自身は値を持ちません。ObservableやSignalとの違いはそこにあるかもしれません。
atomが単なる定義だとするとどういうメリットがあるでしょうか。再利用性が高くなります。以前作った簡単な例がこちら:
複数のProvider配下で、atomはそれぞれ別の値を持ちます。
ちなみに、Jotai v2によってstoreの存在が明確になったので、説明はしやすくなりました。atomの値はstoreで保持されます。storeはざっくりatomとその値のWeakMapです。
type Store = WeakMap<Atom, AtomValue>
興味がある方はこちらの記事も参照ください。
Discussion