Should I define my SQL table with a primary key within the Create Table statement, or should I create the table with no primary key, and use create index to add a unique index.

I've seen a number of people say that physical files should never have unique keys, and instead logicals should provide the unique key. I never understood why, and I don't know if it is/was true.

So my question is:
Is/was this true for DDS files?
Is/was this true for SQL tables?
And why?