From my understanding you only get charged when accessing the map API server side. If you use the JS API in the client's browser the requests don't count against your quota. Google even suggests that your script can pass the information back to your server to be stored. Therefore, you can scale your user base without incurring high costs.
That's not true. The number of client API loads are counted, but the number of map tiles loaded by that client is not. i.e. you are charged per page load, irrespective of the user activity on that page.
Use of the Google Geocoding API is subject to a query limit of 2,500 geolocation requests per day
if you're using the server endpoint, which perhaps checks what server the request is coming from- I have no idea. The JS, client-side version definitely requires a key.
If I remember correctly they were fined for giving enterprise access for free: http://searchengineland.com/french-court-fines-google-660000...