AccessDeniedHandler is normally only called when an authenticated user attempts to access something they should not. The normal flow of the application should prevent them from doing this, so it should only happen if they are deliberately manipulating URLs (or something) in order to try to circumvent their normal boundaries or if there is a bug in the application. So I'm still not sure what the scenario is that makes you want to do this. If you could explain that it might be clearer.
Furthermore, you seem to be assuming that the information would contain a (single?) GrantedAuthority name. The framework is not limited to checking required roles against a list of allowed ones and an AccessDeniedException could occur for many reasons. For example:
a) The user has an authority which is denied access, or multiple authorities are required and they only have a subset
b) An ACL denies access to a domain object within the application.
c) An expression evaluation (in Spring Security 3) denies access
d) The user has a disallowed IP address
e) A custom voter denies access (e.g. the time of day is invalid)
The decision could arise as a combination of votes from a list of registered AccessDecisionVoters, rather than for a single reason.
So the use of a simple String is not sufficiently generic enough to cater for all the possibilities. In fact, I'd say it's not something that the framework can handle for you. If you really need extra information, then it would be better to implement AccessDecisionManager directly (possibly decorating a standard implementation). You can then wrap the exceptions that or thrown or throw custom ones yourself which match your needs.