The difference between 2 Sam 8:4 and 1 Chron 18:4 is more apparent than real. Ellicott sums up the situation well when he says (on 2 Sam 8:4) -
(4) A thousand chariots.—The word chariots has evidently dropped out
of the text here, but is rightly inserted, following the LXX. and 1
Chron.; 700 horsemen should also be changed to 7,000, in accordance
with 1 Chron., this being a more fitting proportion to 20,000 infantry
in the plains of Syria, and the difference being only in two dots over
the letter marking the numeral in Hebrew.
With this understanding, the NIV provides the best translation of 2 Sam 8:4 with:
David captured a thousand of his chariots, seven thousand charioteers
and twenty thousand foot soldiers. He hamstrung all but a hundred of
the chariot horses.
This agrees with 1 Chron 18:4 which says:
David captured a thousand of his chariots, seven thousand charioteers
and twenty thousand foot soldiers. He hamstrung all but a hundred of
the chariot horses.
The NIV has a footnote to this verse which reads:
Septuagint (see also Dead Sea Scrolls and 1 Chron. 18:4); Masoretic
Text captured seventeen hundred of his charioteers
Thus, it appears that the text of 2 Sam 18:4 has been corrupted in transmission - there are a number of other such examples in the 1 & 2 Sam where this has occurred. (1 Sam 13:1 being a prime example where the text is obviously corrupted.)
Note that the BSB is similar to the NIV and has a footnote for 2 Sam 8:4 -
LXX (see also DSS and 1 Chronicles 18:4); MT captured from him
seventeen hundred charioteers
Note that the text, as received in 2 Sam 8:4 is clearly corrupted as it literally reads:
and took David for him a thousand [ ] and seven thousand charioteers
and twenty thousand foot-soldiers ...
Thus, it is clear that the word "chariots" is missing.