First, let me say that "constructive" does not imply "all maps are Turing computable". It means “no excluded middle and axiom of choice were used“. In constructive mathematics the statement
For every $f : \mathbb{N} \to \mathbb{N}$ there exists a Turing machine $M$ that computes $f$
is known as formal Church's thesis. Let us abbreviate it with $\mathrm{CT}$.
Theorem:
- Constructive mathematics does not prove $\mathrm{CT}$.
- Constructive mathematics does not prove $\neg \mathrm{CT}$.
Proof. The first statement holds because classical set theory is a model of constructive mathematics in which $\neg\mathrm{CT}$ is valid. The second statement holds because the effective topos is a model of constructive mathematics in which $\mathrm{CT}$ is valid. $\Box$
The upshot of this is that in a constructive argument you cannot assume that all functions are computable. If you do that, you are not doing constructive mathematics anymore, but rather something like Russian recursive mathematics which assumes additional axioms ($\mathrm{CT}$, countable choice, Markov's principle).
Your question then really is: Why is the usual proof of uncountability of $\mathbb{N} \to \mathbb{N}$ valid in Russian recursive mathematics, given that there are only countably many Turing machines computing functions $\mathbb{N} \to \mathbb{N}$?
The answer is: you are mixing two different kinds of mathematics:
In classical mathematics there are countably many Turing machines computing functions $\mathbb{N} \to \mathbb{N}$.
In Russian constructivism there are uncountably many such Turing machines.
How is this possible? First, note that in constructive mathematics it can well happen that a subset of a countable set is uncountable, see the explanation below. Second, let
$$
T = \{n \in \mathbb{N} \mid \text{$n$ encodes a TM computing a map $\mathbb{N} \to \mathbb{N}$}\}
$$
be the set of indices of Turing machines computing maps $\mathbb{N} \to \mathbb{N}$. There is no constructive proof that $T$ is countable. In fact, $T$ is not computably enumerable, which in Russian recursive mathematics means precisely that it is not countable.
The moral of the story is: the diagonalization proof of uncountabilty of $\mathbb{N} \to \mathbb{N}$ is constructive, but your understanding of "countable" is not.
P.S. The set of indices of all Turing machines is countable, constructively.
P.P.S. The OP asked about the fact that "subsets of countable sets are countable" only holds classically. Here's why.
Theorem: If every subset of $\mathbb{N}$ is countable and Markov's principle holds then excluded middle holds.
Proof. See Proposition 2.6 in this paper. Briefly, given any truth value $p$, let $S = \{n \in \mathbb{N} \mid n = 0 \lor p \}$ and let $e : \mathbb{N} \to S$ be an enumeration of $S$, which exists by assumption. Then $p \Leftrightarrow \exists k \in \mathbb{N} .\, f(k) \neq 0$. By Markov's principle $\exists k \in \mathbb{N} .\, f(k) \neq 0$ is $\neg\neg$-stable, therefore $\neg\neg p \Rightarrow p$. We showed that every truth value is $\neg\neg$-stable, therefore excluded middle holds too. $\Box$
I do not know how to get rid of the assumption of Markov's principle. In any case, the theorem shows that one cannot have a purely constructive proof of "every subset of $\mathbb{N}$ is countable", because Markov's principle is consistent with constructive mathematics.
Supplemental: Douglas Bridges pointed out in this constructivenew post that Markov principle cannot be eliminated.