using sp_executesql to run bulk insert
This has nothing to do with sp_executesql. If you replace the exec call with PRINT @bulkinsert; - an easy way to perform local debugging - you will see this output:

bulk insert product from 'c:\bcp\textfiles\product.txt' 
  with (FIRSTROW = 2, FIELDTERMINATOR = "\t", rowterminator = "\n")


Put that in its own window, and you will see the exact same issue as the error you received is now highlighted by IntelliSense (note the red squiggly under the "\t" and the explanation in the tooltip if you hover over it):


  


The issue is you are using a double-quote (") as a string delimiter - this is not valid in T-SQL. You need to use single-quotes('') to delimit strings, but because the statement itself is embedded in another string, you need to double them up in order to escape them. So:

... @filepath + N''' with (FIRSTROW = 2, 
    FIELDTERMINATOR = ''\t'', rowterminator = ''\n'');';


In fact, in the answer you cite, those are single quotes, not double quotes - perhaps a transcription error.