because the replication agent needs a way to unqiuely identify the rows, otherwise how would the replication agent know what row to update on the subscribers?

also it is expected that in any relational database that all tables will have a primary key, otherwise you really need to look at your design because you are going to run into issues at some stage, whether you use replication or not.