Choi signed with the Seattle Mariners before the 2010 season. He was sent to their Arizona League affiliate to begin his professional baseball career. With the Arizona League Mariners, Choi batted.378 with 23 runs scored, 51 hits, 15 doubles, two triples, one home run, 23 runs batted in, and 10stolen bases in 39 games played. Amongst league batters, Choi was second in on-base percentage, and slugging percentage. Choi also played 11 games with the Class A-AdvancedHigh Desert Mavericks of the California League that season. On August 24, in a game against the Inland Empire 66ers, Choi hit his first and only home run with the Mavericks. With the Mavericks, he batted.302 with seven runs scored, 13 hits, one double, one triple, one home run, and seven RBIs. Combined between the two teams, Choi batted.360 with 30 runs scored, 64 hits, 16 doubles, three triples, two home runs, and 30 RBIs in 50 games played. On defense between the two clubs, he played 34 games as a first baseman and 10 as a catcher, committing two errors; and making 39 assists, and 326 putouts. After the season, he was named the Arizona League Most Valuable Player. The Seattle Mariners named Choi as their top position player on their Arizona League affiliate. Choi played for the Jackson Generals of the Class AASouthern League in 2013. He was named to the World Team roster of the All-Star Futures Game. Choi was added to the Mariners 40-man roster on November 20, 2013. On April 17, 2014, Choi was suspended for 50 games after testing positive for methandienone. Choi sustained a fractured fibula in the first game of Mariners' spring training in 2015, as he leaped at first base to try to save an errant throw from farmhand Tyler Smith at shortstop. The next day, he was designated for assignment when the Mariners re-added left-hander Edgar Olmos.
He signed a minor league contract with the Baltimore Orioles in November 2015.
Los Angeles Angels
Choi was selected by the Los Angeles Angels of Anaheim in the 2015 Rule 5 draft. Choi made the Angels' Opening Day roster, and he made his major league debut on April 5. The Angels designated him for assignment on May 11. On May 15, Choi cleared waivers and accepted an outright to the Salt Lake Bees of the Class AAAPacific Coast League, thus remaining with the Angels. Choi returned to the majors on July 9 in place of injured C. J. Cron. Choi hit his first career major league home run off the Texas Rangers starter A. J. Griffin at Angel Stadium of Anaheim on July 19, 2016. On December 23, 2016, Choi was designated for assignment. He was released.
New York Yankees
Choi signed a minor league contract with the New York Yankees, receiving a non-roster invitation to spring training. At the end of spring training Choi was assigned to the Scranton/Wilkes-Barre RailRiders of the Class AAA International League. The Yankees promoted Choi to the major leagues on July 4, 2017. In his first game with the Yankees, Choi hit a two-run home run. He was designated for assignment on July 19, 2017, and assigned outright to the Triple-A Scranton/Wilkes-Barre RailRiders on July 23, 2017.
Milwaukee Brewers
On January 15, 2018, Choi signed a minor league deal with the Milwaukee Brewers. His contract was purchased by the Brewers on March 28, 2018, and he was assigned to the Opening Day roster. After assignment to the Brewers AAA minor league team, Choi was recalled on May 18, 2018 to the Brewers active roster. Choi homered in his first at-bat as designated hitter against the Minnesota Twins. On June 9, 2018, Choi hit a grand slam home run. It was the Milwaukee Brewers' first grand slam of 2018.
Tampa Bay Rays
The day after his grand slam with the Brewers, Choi was traded to the Tampa Bay Rays for Brad Miller. Choi was optioned to Triple-A Durham Bulls late that day. The Rays promoted Choi to the major leagues on July 11, 2018. In 49 games for the Rays, Choi hit.269 with 8 home runs and 27 RBIs. The following season, Choi established himself in the lineup throughout the year, hitting.261 with 19 home runs and 63 RBI. On July 26, 2020, Choi made his first appearance as a switch hitter in his career, batting right-handed twice against left-handed Toronto Blue Jays pitcher Anthony Kay. In his second appearance against Kay, Choi hit a home run.