Why is tensoring a functor? On objects, it is only defined up to isomorphism... also fiber products...

If you want an honest functor, you can simply choose any representative of the isomorphism class in question; it doesn't have to be "canonical". That is, for every pair $(X,Y)$ of $Z$-schemes, you can choose some triple $(P_{X,Y},p_{X,Y},q_{X,Y})$ where $P_{X,Y}$ is a $Z$-scheme and $p_{X,Y}:P_{X,Y}\to X$ and $q_{X,Y}:P_{X,Y}\to Y$ are maps of $Z$-schemes which satisfy the definiton of a fiber product. There is then a functor $F:Sch/Z\times Sch/Z\to Sch/Z$ which on objects is given by $F(X,Y)=P_{X,Y}$ and on maps is given as follows. Given a pair of maps $f:X\to X'$ and $g:Y\to Y'$, the universal property of $P_{X',Y'}$ means that there is a unique map $h:P_{X,Y}\to P_{X',Y'}$ such that $p_{X',Y'}h=p_{X,Y}$ and $q_{X',Y'}h=q_{X,Y}$. Define $F(f,g)=h$. You can check that this definition really does preserve composition.

(In the argument you are trying to understand, instead of constructing this functor for all $X$ and $Y$ at once, you first construct it on the full subcategory of $Sch/Z\times Sch/Z$ in which both objects are affine, and then on the full subcategory on which at least one object is affine.)

In general, choosing such a triple $(P_{X,Y},p_{X,Y},q_{X,Y})$ simultaneously for every $X$ and $Y$ (in some arbitrary category) might require some form of the axiom of choice. However, in many cases, there is a straightforward "canonical" choice you can make without the axiom of choice (like the "canonical" construction of tensor products you mentioned). But even when there is no clear "canonical" way to do the construction, there are still usually tricks you can do with the Axiom of Regularity to get an explicitly defined functor within the framework of ZF set theory (in particular, you can do this for fiber products of schemes). I can say more about these tricks if you're interested, but they involve some fairly technical details about axiomatic set theory.


The tensor product is defined up to canonical isomorphism, which is different from being defined up to isomorphism: there is a universal map $M\times N \to M\otimes N$ through which any bilinear map $M \times N \to R$ factors, and if you give one construction of the tensor product (e.g. generators and relations), and I give another one (e.g.perhaps I universally add an extra generator for no reason and then add a relation that makes it 0), this universal property will pin down a canonical isomorphism between our constructions. As a result there is no ambiguity in writing the functor $A \otimes \_\_$, say.