One good argument I found [^1] about not exposing primary keys is that primary keys may change (during system/db change) and you want to ensure users have a consistent way of accessing data.
[^1]: https://softwareengineering.stackexchange.com/questions/2183...