AIUI it's per transaction, i.e. every call to the API, so if you're plotting a route every successive point you add triggers a call. So does every time you drag the route, insert/delete/move a point, zoom, drag the map, search for a town, or generate a GPX. Those are just some of the top-level actions a user might see, but a routing program has to do lots of fiddly stuff the user doesn't see. Underneath, the API has tens or maybe hundreds of functions, and just displaying a route might make a couple of hundred calls: multiply that by the number of chums or members or whatever who might use your site in the course of a month and you're essentially writing Google a blank cheque.
I have an API key and I was working on a routing site for our club. I have no intention of changing to a charge account on those terms, so that has put the kybosh on that. At close range I shit upon them with gusto, because it's hard to judge windage from a great height.