I think it's (like so many things) a question of tradeoffs. Programmers often think of complexity (and hence performance) of operations, but that is not important to a mathematician.
The fundamental operation, the successor function, does not look much different, S(n) = n ∪ {n} vs S(n) = {n}.
Mathematics usually defines addition in terms of this function, so that n + m = 1 + (n-1) + m and 0 + m = m. This can be done via induction and works equally well, regardless of which "implementation" we choose. Similarly, multiplication is repeated addition. Seen in this way, both "implementations" of natural numbers leads to horribly inefficient, but ultimately very similar, addition and multiplication operations.
However, the representation S(n) = n ∪ {n} leads to a very simple definition of "a finite set of size n". It is simply a set, which has a bijection between it and n. This, in turn, leads to a much easier arithmetic. Instead of manipulating a specific set representing a given number, we can say that any set of size n can represent the number n. Then addition simply becomes disjoint union, and multiplication becomes Cartesian product, from which things like associativity and commutativity can be proven much easier than in the inductive definition.
The fundamental operation, the successor function, does not look much different, S(n) = n ∪ {n} vs S(n) = {n}. Mathematics usually defines addition in terms of this function, so that n + m = 1 + (n-1) + m and 0 + m = m. This can be done via induction and works equally well, regardless of which "implementation" we choose. Similarly, multiplication is repeated addition. Seen in this way, both "implementations" of natural numbers leads to horribly inefficient, but ultimately very similar, addition and multiplication operations.
However, the representation S(n) = n ∪ {n} leads to a very simple definition of "a finite set of size n". It is simply a set, which has a bijection between it and n. This, in turn, leads to a much easier arithmetic. Instead of manipulating a specific set representing a given number, we can say that any set of size n can represent the number n. Then addition simply becomes disjoint union, and multiplication becomes Cartesian product, from which things like associativity and commutativity can be proven much easier than in the inductive definition.