The "have been x-ing" form can suggest (possible) continuation of the action where as the "have x-ed" form suggests a more likely termination of the action. Most examples I could think of seem to work with either form.
If the action is continuing while the speaker is speaking, then "I have been x-ing" is preferred.
"I have been driving" suggests that the action is either still in progress or will continue after an interruption.
If someone says "I have been driving for 4 days", he might be just reporting the action of driving over the past 4 days but he might continue to drive after finishing his meal. Alternatively, while he's still driving, he might say "I have been driving for four hours."
On the other hand, he might say, "I have driven for the past 4 hours and now I'm tired so now it's your turn to drive for a while." Here, the emphasis is on the past action and there is less of a suggestion that he is still driving or will continue driving.
Sorry to give you so ambiguous an answer. English is like that sometimes.