How can I keep the user permission on a table that is dropped and recreated?
When you drop and re-create the table, it becomes a new object. If the principal is granted access to that specific object, all security related to it will be dropped as well.

If you truncate the table or delete from it, the security will be preserved. You'll need to slightly adjust your bulk import process.

Alternatively, you could run the import with elevated permissions, and have that process execute a GRANT SELECT for that principal. But I would recommend against that.