source ./script
não cria um subshell. O script é executado no shell atual. Nada de inesperado aqui.
No entanto, uma substituição de comando como em echo $(testing)
faz criar uma sub-rede. Se eu te entendi direito, você está surpreso que funciona.
Isso é explicado em Manual de Referência do Bash, seção Ambiente de Execução de Comando [ênfase minha]:
Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a subshell environment that is a duplicate of the shell environment, except that traps caught by the shell are reset to the values that the shell inherited from its parent at invocation.
Portanto, é uma exceção documentada à afirmação de que as variáveis locais não existem em subshells.