The report information you get is not up to the minute, it is aggregated over time, but usually is about a day old. Processing has been done ahead of time to make this data available for you. You can make a single request to retrieve all of your keywords' data at once.
To get a single piece of data for a single keyword is also a request.
On the web(the API is a web service after all) each request takes set up and teardown time. If you have 1000 keywords, retrieving them all individually takes 1000 times the setup and teardown time as retrieving them all at once.
Think of it like moving to a new house. The single API call is like using a small pickup truck with a 6 foot bed and packing everything yourself. You have to drive back and forth many times, but you probably know where everything is at all times. The report is like using a 26' moving truck and having help when you pack. You might be able to get almost everything you need in a single trip saving hours of driving time, but it all gets there! The drawback being you have to unpack everything to find your hair drier.
As for using the report being subject to inconsistency, you are right but that is the nature of the beast. If you are making all your changes using the API, you should be able to update your local copy as you change things. If you also have human users changing things in the AdWords UI, then you are going to have inconsistency no matter what.