Lets say you had two signals, assume that they use the same pulse shaping filter $p(t)$, and assume that their codes, $\mathbf{s}_1$ and $\mathbf{s}_2$, are orthogonal ($<\mathbf{s}_1,\mathbf{s}_2>=0$) and length $N$. The two pulse shaped signals are $x_1(t)=\sum_n s_1[n]p(t-nT)$ and $x_2(t)=\sum_ks_2[k]p(t-kT)$, where the notation $s_1[n]$ means the $n^{th}$ element of the vector $\mathbf{s}_1$. So we want to test if the pulse shaped signals are orthogonal, we need to compute the inner product:
$<x_1(t), x_2(t)>=\int x_1(t)x_2^*(t)dt=\int \bigg[\sum_{n=1}^N s_1[n]p(t-nT)\bigg]\bigg[\sum_{k=1}^N s_2[k]p(t-kT) \bigg]^* dt$
Pull the integral inside and distribute the conjugate:
$=\sum_n \sum_k s_1[n] s_2^*[k] \int p(t-nT)p^*(t-kT) dt$
Assuming we have zero-ISI, that is $\int p(t-nT)p^*(t-kT)dt=0$ for all $n \neq k$, and by letting the energy of the pulse be $E_p$ we get:
$=NE_p \sum_n \sum_k s_1[n] s_2^*[k]$
We need to see if this can ever be equal to zero. First, it is clear that $NE_p \neq 0$ so now we check when can $\sum_n \sum_k s_1[n] s_2^*[k]=0$? We can factor this out like: $\sum_n s_1[n] \sum_k s_2^*[k]$. If $\sum_k s_2^*[k] =0$, then we are all set, and the whole thing goes to $0$. For a code with $\pm1$ elements, this amounts to there being an equal amount of $1$'s as $-1$'s.
This is not the case for all orthogonal codes though. Take any Hadamard matrix, one of its codes is the all $1$'s code and the rest have equal amount of $1$'s as $-1$'s by design.
How can the all 1's code be a part of the orthogonal set? This is where the factored term $\sum_n s_1[n] \sum_k s_2^*[k]$ helps. Say that $\mathbf{s}_2$ is the all $1$'s code (so the sum $\neq 0$, lets call the sum value $S_2^*$), the other code $\mathbf{s}_1$ "saves" the orthogonality because then we'll have $\sum_n s_1[n] S_2^*=S_2^* \sum_n s_1[n]=0$.
Edit
Adding some code that helps to get the point across. It is helpful to look at the correlation matrices so you can see visually the amount of "leaked" interference. The rectangular pulse is just about perfect as you expect and the RRC lets through a small amount on the off-diagonal elements. Increasing the filter length can further push down these to the point where the RRC and rectangular pulse are behaving similarily. MATLAB code:
% parameters
sps = 10;
span = 6;
rolloff = 0.25;
codeLength = 4;
H = hadamard(codeLength)/sqrt(codeLength); % normalize so that unit norm
H_up = upsample(H, sps);
rrcPulse = rcosdesign(rolloff, span, sps, 'sqrt'); % pulse filter
rectPulse = rectpulse(1, sps)/sqrt(sps); % normalize
% x(:, n) is the n^th pulse shaped signal
for n = 1:codeLength
x1(:, n) = conv(rrcPulse, H_up(:, n)); % RRC pulse shaped
x2(:, n) = conv(rectPulse, H_up(:, n)); % rectangular pulse shaped
end
R1 = x1'*x1; % correlation matrix for RRC pulse
val = maxk(R1(:), codeLength+1);
maxOffDiagonalVal1 = val(end); % this is the max interference from a different code
R2 = x2'*x2; % correlation matrix for rectangular pulse
val = maxk(R2(:), codeLength+1);
maxOffDiagonalVal2 = val(end); % this is the max interference from a different code
figure
imagesc(R1)
xlabel('Signal #')
ylabel('Signal #')
title('Correlation Matrix (RRC)')
c = colorbar;
c.Label.String = 'Correlation';
figure
imagesc(R2)
xlabel('Signal #')
ylabel('Signal #')
title('Correlation Matrix (Rect)')
c = colorbar;
c.Label.String = 'Correlation';