I might describe them as a "selfless jerk" vs a "selfish jerk". A selfless jerk cares about the company and team, and while is abrasive is always doing it for the right reasons, and is trying to be effective for the company. A selfish jerk is just a jerk who cares about themselves.