Some time removed from the problem often brings clarity.
With trial and error I was able to get some error code feedback from the API. At some point revealed to me the Content-Type I was sending was "octet-stream".
I added the following line, to specify the Content-Type. I chose "application/json" since the https://developers.google.com/oauthplayground/ had that as the default content-type for the operation: calendar insert.
<cfhttpparam type="header" name="Content-Type" value="application/json" />
Then it occurred to me that I was attempting to send form fields to the API and not JSON. The final working code for callooks something like this:
<cfhttp url="https://www.googleapis.com/calendar/v3/calendars" charset="utf-8" method="post">
<cfhttpparam type="header" name="Content-Type" value="application/json" />
<cfhttpparam type="header" name="Authorization" value="bearer #arguments.access_token#" />
<cfhttpparam type="body" value='{"summary":"newCalendar"}' />
</cfhttp>