If you’re asking specifically why Janestreet’s Base/Core libraries use sexp everywhere, it’s because they basically use it as the default data serialization format. See the Data Serialization with S-Expressions chapter in Real World OCaml.
Edit: And if you want to work with Base/Core, you will probably end up sprinkling @@deriving sexp over many of your types as well. Many of their functors require it, and many other things (Map, Set, etc) will work only with the sexp converters, and the deriving sexp is the easiest way to get the functionality.
S-expressions being strongly associated with lisps is basically a historical accident. Leaving aside Jane Street’s particular uses of them, they are a useful approach to all kinds of data interchange and symbolic representation tasks.
Why did you migrate from Clojure to … eventually Rust ?
For me it was the lack of a type system: (1) I wanted to understand datashapes without having to run the code and (2) I wanted dumb errors caught at compile time and (3) I hated writing unit tests for things a HM type system could catch.