Each ISBN is assigned by a publisher. The publisher can buy ISBN ranges from an ISBN agency, which gets its ISBN prefix from the international ISBN agency. Based on these assigned ISBN ranges, one can read the parts of an ISBN. For instance the ISBNs from your example:
- 0-387-90275-9 = English agency - Springer - 90275 - check digit
- 3-540-90275-9 = German agency - Springer - 90275 - check digit
In this case Springer is a German publisher, so it belongs to the German agency (3-). Springer seems to have decided to assign two ISBNs because the book is English (0-), for better visibility or just because of some internal business rule. I'd bet that foreign books are less present in book stores and in libraries. With two prefixes for German countries and for English countries the publisher might have a slight advantange. Maybe the editor just insisted to get an English ISBN for his book.
By the way, OCLC provides a web service to decode ISBNs, for instance 0387902759 is:
{
"isbn":["0-387-90275-9"],
"area":"English speaking area",
"publisher":"Springer",
"city":"Berlin"
}