Was able to work out solution via helpful user in dbt slack channel:
GRANT DATABASE ROLE <name> TO SHARE <share_name>
(need to run this only once)- "{% if target.name | lower == 'prod' %} grant select on table <database.schema.table> to database role <name>; {% endif %}"
So you grant select privilege on desired table to the database role (which is already granted to the share) instead of granting the privilege directly to the share. I still do not know why the original method does not work though.