Terry Tao's computational perspective on set theory

The simplest answer is that he is using certain objects such as natural numbers and functions via their abstracted properties (called interfaces in programming languages), instead of pinning down any specific objects that have those properties (called implementations in programming languages). The reason is that we usually care about the interfaces, and rarely about how exactly they are implemented.

Remember that usually mathematical objects do not come alone but as members of some structure, and the properties we want them to have is better understood as properties of the structure as a single whole. That also means that we are free to change the structure as long as it satisfies the same properties.

The typical example is the natural numbers. Almost all the time we only care about the properties that they have in relation to one another, like $0 < 1 < 2 < 3 < \cdots$, and induction over the natural numbers. These properties are all required to hold regardless of how the collection of natural numbers is actually formed. ZFC has many ways of exhibiting a model of PA, and in fact Zermelo's original construction of one of these models was different from the now standard von Neumann construction. The reason we use the latter now is one of the rare cases where we find that it is more convenient to have the natural numbers be a transitive set, so that they are von Neumann ordinals. There are technical advantages to that, because we can use the inbuilt symbol $\in$ for the ordering on ordinals. One can say that we like the structure of natural numbers to internally satisfy PA and externally be a substructure of the structure of ordinals, so there is special reason to privilege the von Neumann construction of natural numbers.

Another typical example is the real numbers. This time we never in practice care how they are constructed. As long as they satisfy the field properties and the second-order completeness axiom, that is good enough. One can say that we only need the structure of the reals to satisfy internal properties, and we don't care about any external properties. So whether use choose the Cauchy sequences of rationals or Dedekind cuts of the rationals or decimal sequences, it doesn't matter at all. The only point at which it matters is the when you want to construct the structure to show that there is some instance satisfying the desired properties, where in some weak systems some of these are not possible to construct. Thereafter we use real numbers only via their interface.

Similarly for functions. In ZFC they can be encoded as special kinds of subsets of the cartesian product of the domain and codomain, but in practice we don't care, and sometimes don't want that restriction, when dealing with class functions for example. You see, you think of the powerset symbol $\mathcal{P}$ as a function, don't you? But it can't be a set in ZFC unless you want a contradiction. Same for the cardinality map, and in general for any function-like thing whose domain or codomain is not a set. One could work in the strictly stronger MK set theory to avoid that issue, but the point remains that we don't really care how functions are implemented as long as we can use them the way we expect them to function.

To ensure that the mathematical structures one uses can be constructed in ZFC, one just has to make sure that either there is a set in ZFC that satisfies the desired interface (such as for natural numbers and reals), or there is a syntactic translation from one's proof to a proof in ZFC (such as proofs using class functions, which often but not always can be translated systematically into proofs that work in ZFC, simply by replacing the use of those functions by formulae), or that one is working in a conservative extension of ZFC (such as using full abbreviation power).