Primary Key values should always be arbitrary.
No, they should not. In an ideal world, the Primary Key is the unique identifier that inherently denotes the current record. Using arbitrary values is a kludge by people who simply do not understand how a database works.
the primary key values themselves should never be visible outside of the database: if the business needs unique identifiers, you should coin your own, e.g. with UUIDs. Never attempt to re-use PK values, or for that matter, business-known identifiers. In keeping with the principles of database normal-forms, all keys should be nothing other than abstract identifiers, carrying no embedded information.
That is ridiculous. There is nothing wrong with reusing PK values. And it has nothing to do with normal forms.