If your GET requests are not idempotent then HTTP caching between your server and clients would break your application. POST requests are by definition not idempotent, so HTTP caches will not cache these requests and results: you still get the benefits of caching GET requests, without breaking your application's protocol. Great success.
And, if you ever need to delete objects, DELETE will be much easier to read on the wire and logs than a POST request that does the deletion. But web browsers cannot easily make HTTP requests with the DELETE verb, so it's really more for clients you've programmed yourself.