I hit this same problem, and after some research here are the 2 options I found:
Option 1 If you can modify the source query against SQL Server, then you can change the format of the hex value. For example, on my sample binary data:
SELECT
BinaryCol1, --A hex value like "0x05CCBD7..."; This will not load into Snowflake
DefaultStyle = convert(varchar(max), BinaryCol1, 1), -- A hex value like "0x05CCBD7..."; This will not load into Snowflake
DesiredStyle = convert(varchar(max), BinaryCol1, 2) -- A hex value like "05CCBD7..."; This WILL load into Snowflake
FROM dbo.tmp_binarytest;
NOTE: this assumes that your load is using the default value of "HEX" for the load option BINARY_FORMAT. (See this for more: https://docs.snowflake.com/en/user-guide/binary-input-output.html#file-format-option-for-loading-unloading-binary-values). If you have that option explicitly set to one of the other values, UTF8 or BASE64, then the above approach won't work. (In the ADF Copy Activity, the BINARY_FORMAT option would be set on the "Sink" tab under the "Additional Snowflake format options" section, entered as a Key/Value pair).
Option 2 Alternatively, if you can't modify the SELECT against the source system, you can load into a VARCHAR(16777216) column on the Snowflake side, and then manipulate the string to get rid of the leading "0x" and then convert to binary, like this:
TRY_TO_BINARY(REPLACE(binarycol1,'0x',''), 'hex')
or something similar, and save that resulting binary value somewhere else.