The apps#list method requires authorization with the scope https://www.googleapis.com/auth/drive.apps.readonly
. Just add it to the array of scopes:
$client->setAssertionCredentials(new Google_Auth_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/drive.apps.readonly'),
$key)
);