As a complement to the answer by Enrico, the ISIN identifies a financial instrument in an unique way. Tradition is, of course a reason and many codes, such as the CUSIP code in the US, predate the ISIN.
But there are a few other solid underlying principles that are applied in financial industry. These are pieces of information that are not necessarily "public issue".
ISIN and trading venues
In your data model, you would want to distinguish the financial instrument from the trading venue (i.e. the stock exchange, etc.). One instrument may be traded on several trading venues.
Each stock exchange might have their own codes for practicality. Data providers for wealth managers and analysts (data streams), such as Bloomberg, will have a unique code that distinguishes between the same IBM traded on NY exchange, from the same instrument traded elsewhere, because the quotes and conditions are not the same; so it makes a world of difference.
By contrast, ISIN is built from the viewpoint of back office of banks, which need to process a trade once it is already done. Once the trade is settled, it no longer matters whether the investor bought the IBM common share on NY or elsewhere ; what matters is that all the IBMs need to converge into the same line in the custody account of the investor. The same applies to dividends: investor needs to receive their dividends, regardless of where the share was bought. That's what the ISIN is for. The ISIN is also for regulators (especially in the European Union), to control that market regulations are being correctly applied.
ISIN and fungibility
Of course, a key question is a question of granularity of the ISIN. A thumb rule is that if that if a company issues new financial instruments that diverge financially or administratively from previous ones, then the new issue would have a different ISIN.
People often think about equity as the paradigm for the attribution of ISINs: if company A issues common stock at a later date, it is often fungible with the earlier one, i.e. it makes no difference. In that case, you would not issue a new ISIN. But that is a very particular case, the exception rather than the rule. If a company issues, say "preferred stock" that is different from the "common stock", then it would have a different ISIN.
Two issues of bonds from the same company, would have a different ISIN, because they will have different start date and end date, and presumably different interest rates.
Investment funds are divided into classes, and classes are divided into compartments; you might have compartments that are labeled in different currencies, or compartments that do regulatory reporting in country X so that they can be distributed on that market.
The same applies to structured products since in many cases, any new issue would have markedly different characteristics than the previous one (unless it was e.g. some basket of equity, which would be fungible).
For derivatives, one should not be suprised that there are so many ISINs around because they are incredibly un-fungible: even a different start date and a different end date on a future instrument, would result in a completely financial outcome, hence determine a different ISIN.
The bottom line is that the ISIN should always identify a set of fungible financial instruments; it should be the lowest granularity level that you need in practice.
ISIN and Resistance against Public Transparency
There is a last, and more hushed reason why the ISIN is not being used more, particularly on the US market: money insterests. There is, today, a very lucrative market of financial data providers, who provide data to banks and other financial intermediaries.
This is a very useful and legitimate business, since collecting information (either real-time, or the zillions of data, such as issuer, distributions, type of industry, underlyings, etc. surrounding a financial instrument) is a difficult and costly process.
There are, however, aspects that are less savory. S&P (the company tasked with issuing ISINs in the US) claimed to the EU Commission (in the European Union) that whoever uses American ISINs, i.e. starting with 'US' should pay license fees to them, directly or indirectly (see page 10). You might think that it is strange that after a issuer has already paid S&P for the public service of issuing an ISIN (which is right and legitimate), the public would have to pay them a second time to have the right use to use that public information? You might be right. This claim has run afoul of EU Antitrust laws and their claim has been unequivocally rejected.
On the contrary, the EU Commission has decided to make their massive database of financial instruments completely available to the public (Open Data), as a matter of market transparency. Consider it as a huge "data leak" deliberately organized by the EU to break the market open.
The bottom line is in the US (and presumably in other countries), there is strong resistance against the free use of ISINs, because of vested interests. Since those private interests have committed the mistake of standing against the public interest of market regulation (by the state) and public transparency, it is not surprising that these resistances are getting busted.