$\ell(0)$ is problematic, so I will assume that you actually mean to restrict to positive integers rather than natural numbers.
We can rephrase the construction of $a(n)$ to emphasise the increment: let $$d_i(n) = \begin{cases} 0 & \textrm{if }i < 0 \\ d_{i-1}(n) + 2^i \, T(n + d_{i-1}(n), \ell(n) - i) & \textrm{otherwise} \end{cases}$$ Then $a(n) = n + d_{\ell(n)}(n)$ and $b(n) = \frac{d_{\ell(2n)}(2n) - 1}{2}$.
We can now convert this to a more direct recurrence for $b$. For any positive $x$, $T(x, \ell(x)) = 1$, so in general $d_0(x) = 1$. Adding $2n$ to $1$ involves no carries, so $T(2n + 1, j) = T(n, j-1)$. Then if we define $$d'_i(n) = \begin{cases} 0 & \textrm{if }i < 0 \\ d'_{i-1}(n) + 2^i \, T(n + d'_{i-1}(n), \ell(n) - i - 1) & \textrm{otherwise} \end{cases}$$ offsetting the shifts we have $$b(n) = d'_{\ell(n) - 1}(n) + 2^{\ell(n)}$$
At step $i$ we either add $2^i$ or we don't, so $d'_i(n)$ can be viewed as a set of powers of 2 corresponding to its binary representation. In particular this means that $0 \le d'_i(n) < 2^{i+1}$, so $2^{\ell(n)} \le b(n) < 2^{\ell(n)+1}$, giving the desired property that it maps $[2^m, 2^{m+1})$ to $[2^m, 2^{m+1})$.
Suppose $b(2^m + j) = b(2^m + k)$ where wlog $0 \le j < k < 2^m$. Then $d'_{m-1}(2^m + j) = d'_{m-1}(2^m + k)$. Let this value be $D$.
Because of the previously noted binary construction of $d'_i(n)$, this means that $\forall i < m: d'_i(2^m + j) = d'_i(2^m + k) = D \bmod {2^{i+1}}$ and we obtain $$\forall i \in [0,m): T(2^m + j + (D \bmod {2^{i+1}}), m - i - 1) = T(2^m + k + (D \bmod {2^{i+1}}), m - i - 1)$$ $2^m$ is too high to be relevant to these bit extractions, so $$\forall i \in [0,m): T(j + (D \bmod {2^{i+1}}), m - i - 1) = T(k + (D \bmod {2^{i+1}}), m - i - 1)$$ We can now proceed by induction on $i$ from $i=m-1$ down to $i=0$ to show that $j = k$, deriving a contradiction and demonstrating that $b$ does indeed permute the positive integers.