Js_of_ocaml takes lowlevel bytecode from OCaml compiler, BuckleScript takes the highlevel rawlambda representation from OCaml compiler
Js_of_ocaml focuses more on existing OCaml eco-system(opam) while BuckleScript's major goal is to target npm
Js_of_ocaml and BuckleScript have slightly different runtime encoding in several places, for example, BuckleScript encodes OCaml Array as JS Array while js_of_ocaml requires its index 0 to be of value 0.
Both projects are improving quickly, so this can change in the future!
The name makes it impossible to research to find any blog posts or anything, but the familiar syntax alone might make it at least a first step for me.
Reason doesn't yet work with Edgar(OP)'s React bindings yet, but it could easily (and therefore JSX would work as well).
Though you can use just the compiler inside a regular ASP.NET MVC project, if you so choose.
I'm genuinely curious as to your comparison though, would love to read it!
Imho, we need an equivalent of the "great programming language shootout" for all the AltJS languages.
Also, allowing side-effects while still providing the mentioned type system makes it potentially much easier to integrate with existing JS code.
Haskell is lazy, which means using GHCJS to compile it to JS produces code full of explicit thunks (think of promises). Both Elm and PureScript are compile-to-JS-languages that inherit a lot from Haskell, but not it's laziness.
Generally this whole idea would make sense when you are writing a web application and you are using OCaml or F# on the server and want to use it for the client code too. Same justification for using node.js, but in reverse.
But I know that the Ionide plugin for Atom and VSCode is written in F# compiled to javascript just because the developers like to code in F#