IIRC, Ignition's guts simply hands the null to the JDBC driver. Null is fundamentally untyped in java, so there's no way to indicate to SQL unless supplied in the query as a constant.
SSMS doesn't use JDBC, so it isn't comparable anyways.
The cast doesn't hurt anything if you pass an actual byte array. Consider it a "type hint" for cases that JDBC cannot figure out on its own.
It may well be an issue with the JDBC driver. However, every other type I’ve tried (int, varchar, etc.) allowed passing and inserting a NULL/None without having to cast/convert in the SQL itself.
I thought it worth reporting in case is was something specific to way Ignition was handling it.
No, it occurs for other types, too--I've often had to use it with datetime types, and for other DB flavors. (Only for nullables.) Getting away without it relies on implicit conversion, which varies by DB brand.
(I prefer PostgreSQL's double colon cast operator as a more readable alternate, but that is non-standard, unfortunately.)