Werner's point about internal trusted applications is good though. Certainly within the authorization server's own org there may be apps that reside on servers that you control and trust, and can keep a secret. I don't consider this a violation of my above rule because the user already trusts the authorization server's company (that's why the user is storing data there) so if that company has internal need to spread data around, that's all part of that.
The "inconvenient, impractical, etc." reasons for not asking approval from the user are no reasons at all in my strong opinion. Inconvenience is a very poor reason for giving away user data without their consent.
The OAuthAuthorizationServer's OAuthController has a rudimentary auto-approve check. Basically if the client is asking for authorization that is a subset (w.r.t. scope) of what has previously been granted by the resource owner to that client then there is no reason to ask the user to confirm that again, so the user step is skipped.
One massive caution: auto-approval of implicit grants is very dangerous, and in my opinion should never be done. This gives any installed client app access to that user's data on the resource server without user approval or knowledge. This is because the implicit grant requires no client secret, so any client can impersonate any other client. For installed clients this is trivial to execute the attack. For JS clients, there are mitigations such as pre-registered callback URLs but even then I bet almost all JS clients are still vulnerable. Most client callback URLs probably sniff the access token from the fragment, and pass it back to the parent page. So in fact (AFAIK) there is (usually?) nothing preventing an attacker from hosting a hidden iframe with an auth request that impersonates a popular client, which gets auto-approved, and then accepts the access token when the real client's own callback page ignorantly hands the access token off to the wrong client. I believe mitigations exist (checking parent.location before sending the parent the token may work here), but I wonder how often they are employed.
If you want your JS clients to avoid having to prompt the user again every time the access token expires, I recommend using the authorization code grant and issue refresh tokens to non-authenticated clients, which recent drafts of the oauth 2 spec allow for (but DNOA does not yet, IIRC).