That's a good question. I have to admit that I hadn't noticed the change. (To clarify, for those who haven't read the book, the character played by Sean Penn in the movie is called "Jimmy Markum" in the movie, but he was "Jimmy Marcus" in the book by Dennis Lehane.)
Lehane worked with Eastwood on the preparation for the movie so he must have known about and approved the change.
It's just a guess, but perhaps it might have been because someone by the name of James or Jimmy Marcus is working in films or theatre now? I searched the IMDb and Google and came up with a "James A. Marcus" from the silent movie era, an actor "James Marcus" (roles in films from A Clockwork Orange to the late 80s), a director "James Marcus" with one film credit in 1989, and a "Jimmy Marcus" who staged a play in Islington, England in the 70s or 80s.
Another guess might be that "Jimmy Marcus" or "James Marcus" is registered as a trademark somewhere, or perhaps someone by that name is a legal corporation. I don't really know whether such things are taken into account by the legal staffs of film productions, but in this day and age, they well might be.
Names do sometimes get changed in the course of adapting a film from a book, or even in shooting a film. The character played by Eastwood in Play Misty for Me is called "Dave Garland" in the script and the novelization of the screenplay, and even in some publicity material. However, in the film, whenever his last name is mentioned it is clearly "Garver" and not "Garland" (he is just "Dave" in the onscreen credits). Also, Eastwood's character in Unforgiven is called "Bill Munny" or just "Bill" throughout David Webb Peoples's original screenplay and even in the onscreen credits, but no one in the film ever calls him anything but "Will" Munny.
Also, the character called "Danny Hansford" in John Berendt's Midnight in the Garden of Good and Evil (a rambling farrago based on true events) became "Billy Hanson" when he was played by Jude Law in Eastwood's film.