Find all tables in a snapshot replication that have primary keys
This is what I ended up going with.

--====================================================================================================================================================
--  Get tables in Snapshot replication for the selected DB.
--====================================================================================================================================================

IF OBJECT_ID ('tempdb..#t1') IS NOT NULL DROP TABLE #t1;

SELECT      pub.name                                                                AS [Publication]
          , CASE WHEN pub.name LIKE '%Snapshot%' THEN 'SnapShot'
                WHEN pub.name LIKE '%Transaction%' THEN 'Transaction' ELSE NULL END AS ReplicationType
          , art.name                                                                AS [Article]
          , serv.name                                                               AS [Subsriber]
          , sub.dest_db                                                             AS [DestinationDB]
          , obj.object_id
          , CASE WHEN obj.type = 'U' THEN 'Table'
                WHEN obj.type = 'V' THEN 'View'
                WHEN obj.type = 'P' THEN 'SP' ELSE NULL END                         AS ObjectType
INTO        #t1
FROM        dbo.syssubscriptions sub
INNER JOIN  sys.servers          serv ON serv.server_id = sub.srvid
INNER JOIN  dbo.sysarticles      art ON art.artid = sub.artid
INNER JOIN  dbo.syspublications  pub ON pub.pubid = art.pubid
INNER JOIN  sys.objects          obj ON obj.object_id = art.objid
WHERE       CASE WHEN pub.name LIKE '%Snapshot%' THEN 'SnapShot'
                WHEN pub.name LIKE '%Transaction%' THEN 'Transaction' ELSE NULL END = 'Snapshot';

--====================================================================================================================================================
--  Check for primary keys on the above tables
--====================================================================================================================================================
SELECT          SCHEMA_NAME (tab.schema_id)                         AS [schema_name]
              , tab.[name]                                          AS table_name
              , pk.[name]                                           AS pk_name
              , SUBSTRING (column_names, 1, LEN (column_names) - 1) AS [columns]
FROM            sys.tables  tab
LEFT OUTER JOIN sys.indexes pk ON tab.object_id = pk.object_id
                                  AND   pk.is_primary_key = 1
CROSS APPLY     (
    SELECT      col.[name] + ', '
    FROM        sys.index_columns ic
    INNER JOIN  sys.columns       col ON ic.object_id = col.object_id
                                         AND  ic.column_id = col.column_id
    WHERE       ic.object_id = tab.object_id
                AND ic.index_id = pk.index_id
    ORDER BY    col.column_id
    FOR XML PATH ('')
)                           D(column_names)
WHERE           pk.object_id IN (
                    SELECT  object_id FROM  #t1
                )
ORDER BY        SCHEMA_NAME (tab.schema_id)
              , tab.[name];