I just solved a similar problem by forcing to not use the cache in Google_Auth_AssertionCredentials. I guess that while trying and errors the cache loads
Change your $cred declaration to this:
$cred = new Google_Auth_AssertionCredentials($service_acct, array('https://www.googleapis.com/auth/calendar'), $pkey, 'notasecret','http://oauth.net/grant_type/jwt/1.0/bearer',false,false
);
The last false
disable the use of a cache.