There are some options besides dropping a table and recreating it for snap shot replication (at least there is for SS 2000). You can "Delete all data in the existing table" instead of dropping the tables. This could reduce the time that tables are not available but if there is a table structure change, this could cause problems.
I would recommend once a day, off hours snapshot replication or bite the bullet, add the primary key to all tables needed and use transaction replication. I'm sure that there are some articles on SSC that would give some useful arguements for setting up a relational database with primary keys.