I'm not sure about the performance issues, but there is one issue that makes auto-generated primary keys the best choice for most applications: uniqueness.
Only the database can generate a value for a primary key column and guarantee that that value does not yet exist in the table.