If I was a webservice, such as Twitter, how does creating an API for people to access my data help me? I can see that they are extending your service to areas that you might not have the resources to expand to (in a way extending your own service), but is it worth all of the bandwidth and infrastructure costs associated with giving access to your data?
All of those little Twitter apps can't be bringing in money for Twitter. I would presume the opposite.
EDIT:
ANSWER 1: Someone with time/money can make your service more popular. You can also place limits on the API usage (as Google does).
ANSWER 2: It is easier to add value to your service than to clone your service. This additional attraction can make/break your site. You can even charge for access.
ANSWER 3: An API is good when it extends an already-working business model. (Don't be Twitter.)