Thanks for the question.
Absolutely agree that the documentation is poor and incomplete. The docs do make more sense if you really understand how an SPN works in a kerberos environment - which I don't! Subjects such as Constrained Delegation also become clearer.
Just a comment on Answer B. You can only specify the Instance Name when configuring an SPN for a non-TCP protocol. When registering the MSSQL Service for an SPN using TCP, you must specify the Port Number; the Instance Name is not valid. Which also means dynamic ports will not work for true Kerberos authentication.
The Instance Name is valid for non-TCP protocols, such as Named Pipes and Shared Memory.
The subject was discussed recently in the forum "Register SPN for SQL Service account"