Hi!
@RAbraham this is really good question but I probably should not answer it as I’m going to be biased for sure… But anyway… 
The main difference for me is the query type. In purescript-postgresql-node Query is parametrized over output type but in purescript-postgresql-client it is parameterized over input and output types.
If you are working only on the layer of String queries which are executed “right away” you can easily ignore this difference.
It can start to be somewhat important when you are building your queries separately from their execution. In such a case I think it is better to be able to provide input and output types for your query because compiler will check if input values “are correct” on the query call site.
On the other hand you can say that all these String queries types are “assigned by hand” so they are not really relevant…
But if you think about type checked SQL queries this can make a big difference.
Design of two paramaters Query was chosen by @rightfold from the beginning.
Later she had also provided sqltopurs PS codegen tool which produces correctly typed Query values. They are type checked against postgresql database. In this context both parameters of a Query are checked and saved in generated PS code.
@Kamirus has just started new project in which he is exploring design space for selda port (https://github.com/Kamirus/purescript-selda) and this structure of Query type is important in this context too. This future Selda DSL (hopefully even nicer than Haskell version) will produce SQL Query values correctly typed over input and output types.
The last and probably minor point is that postgresql-client, because of these bidirectional Query type, provides two complementary type classes ToSqlValue and FromSqlValue for which we can provide some “law”: identity = toSqlValue >>> fromSqlValue.
So in some sens these are “lawfull” type classes 