So it turns out this is much simpler than expected. The other forum article you sent me to @mlauber71 gave a suggestion that fixed it without needing anything further. It turns out that JDBC is explicitly casting the GUID as a string in the prepared statement it sends to Postgres.
By setting the “stringtype” JDBC parameter to “unspecified” the prepared statement sends the parameter values through without strongly typing them, so Postgres then interprets the string based on its format…which looks like a GUID/UUID, so Postgres runs the insert and casts it to uuid.
I may still try out the other suggestions just to learn more about KNIME, but for those looking for a solution to Postgres and GUID/UUID handling in KNIME, just add “stringtype=undefined” in the JDBC parameter tab of the connection.