Perhaps rationale is not the best way to go when it comes to error messages. If we follow a universal logic, yes, we shouldn't apologize for something that isn't our fault.
However, we should always put in value the user-centered approach with the end purpose of making the user feel comfortable no matter what. In this regard, an apologetic approach is the best solution.
Think of what the user feels in that moment:
"Damn, I am not allowed to use this feature!"
An error is a crucial moment when you can easily lose a visitor, that is why you must treat the situation very carefully, thinking of all the cognitive and psychological implications. This is what truly matters, not everyday life logic.
Either if it's his fault or not, when encountering an error, the user will feel frustrated. When you feel frustrated, you want someone's apology. Yes, you blame everyone and everything around you, but yourself.
It's childish, but I admit it happened to me too. When an application failed me (because of my mistake) and apologized, it really put a smile on my face and made me think:
"Fine, I forgive you. I know you didn't do anything wrong, anyway."
If you aim at all costs for a certain political corectness and you do not want to apologize for something that isn't your fault, consider a more neutral tone, like:
"Unfortunately, you do not have permission to access this feature."
I find the word "unfortunately" crucial. Otherwise, it would sound like an incrimination, which will chase away the frustrated user in a second:
"You do not have permission to access this feature." (add an exclamation mark and you won't see that user again)
I find the whole message too formal somehow (it's true, it depends on the context of your app). I would go for something short and funny that delivers the message in a non-robotic fashion. It sounds simple, but it's very difficult to come up with such texts, unles you are trained that way, so as to avoid further dilemma like this one:
Very important!
You should also provide a possible explanation for the error and some ways to recover from it. This will reduce the user's frustration so much!