Just because Nicholson got top billing and one hell of a contract certainly doesn't mean he ''upstaged'' Keaton. Commercially perhaps, but not creatively.
How exactly do you want Keaton to steal the show against an A-list actor playing one of the most flamboyant roles of his entire career? There was equal praise given to both actors and if anything Keaton was referred to as the greater revelation. The movie needed that ying and yang to work.
Plus, every live-action Batman actor has been upstaged by thier villians... that's what happens when you are playing the straight guy or brooding loner in a rubber suit. The only time an actor outshone his fellow villianous actors was Christian Bale in Batman Begins... and THAT was only because the villians in that movie were mundane as sin.