My friend John Richardson suggested that it was Harmon Killebrew.
Killebrew had a career OPS+ of 143. His highest batting average in a qualifying season was .288.
I rated hitters by OPS+ and used the Baseball Reference Play Index to call up all the players with at least a 140 OPS+ with a minimum of 3,000 PAs.
Click here to see that list.
They are sorted by batting average (BA) in ascending order. There are 80 players on the list and 28 had lifetime BAs under .300. Those are the only guys who might never have hit .300.
The other players among those 28 who never hit .300 are Giancarlo Stanton and Frank Howard. Stanton currently has a 143 OPS+ while Howard finished his career with 142. So, although it is close, Killebrew is the best hitter to never hit .300 based on career OPS+. But Stanton could end up ahead of him.
Mike Schmidt had a career OPS+ of 147. The one year he hit at least .300 was in 1981 when he hit .316. Although he qualified for the batting title, it was in only 434 PAs since that was a strike shortened season.
Kevin Mitchell has a career OPS+ of 142. The only year he hit at least .300 was 1994, another strike shortened season. He finished 6th in BA in the NL that year but in only 380 PAs.