This is easy to do by creating named nodes for the relevant heads of your phrases and then using the positioning library to add a node to the left. I've used arrows to connect the nodes; if you just want a line with no arrowhead, remove the -> from the \draw commands. If you have a lot of these trees, you may find it easier to do this using the forest package instead of tikz-qtree, since it allows you to instantly create a named node simply by adding a name=... key.
I've added both solutions into one document. I've also replaced the times package with newtxtext and newtxmath; The times package is deprecated. I've also changed all your \sc to \scshape since two letter font changing commands are also deprecated (see Will two-letter font style commands (\bf , \it , …) ever be resurrected in LaTeX? for why). I've created a macro for bar levels, \1 this is defined already within a \Tree environment if you load the tikz-qtree-compat package, but is useful to have more generally for syntax.
I've also made a few other cosmetic changes to your tree (and since the tree you've drawn doesn't include Tense, I've left it off of the label.)
\documentclass[10pt]{book}
\usepackage[T1]{fontenc}
\usepackage{newtxmath,newtxtext} % don't use {times} it's deprecated
\usepackage{linguex}%
\usepackage{tikz}%
\usetikzlibrary{positioning}%
\usepackage{tikz-qtree,tikz-qtree-compat}%
\usepackage[linguistics]{forest}
\newcommand*\1{\ensuremath{'}}
\usepackage{adjustbox}
\begin{document}
\ex.
\a. John destroyed the sandcastle.
\b.
\begin{adjustbox}{max width=0.91\textwidth}
\begin{tikzpicture}[baseline]
\Tree [.InitP [.{{\scshape initiator}\\John} ] [.Init\1 [.\node(Init){Init}; ] [.ProcP
[.{{\scshape undergoer}\\the sandcastle} ] [.Proc\1 [.\node(Proc){Proc}; ] [.ResP [.{{\scshape
resultee}\\$<$the sandcastle$>$ } ] [.Res\1 [.\node(Res){Res}; ] [.XP \edge[roof];
{\scshape ground$/$final state} ] ] ] ] ] ] ]
\node [below left=3cm of Init,font=\itshape] (D) {destroy};
\draw[->] (D.east) -- (Init);
\draw[->] (D.east) -- (Proc);
\draw[->] (D.east) -- (Res);
\end{tikzpicture}
\end{adjustbox}
\b.
\begin{forest}
[InitP [{{\scshape initiator}\\John} ] [Init\1 [Init,name=Init ] [ProcP
[{{\scshape undergoer}\\the sandcastle} ] [Proc\1 [Proc,name=Proc ] [ResP [{{\scshape
resultee}\\$<$the sandcastle$>$ } ] [Res\1 [Res,name=Res ] [XP[{\scshape ground$/$final state},roof ] ] ] ] ] ]]]
\node [below left=3.5cm of Init,font=\itshape] (D) {destroy};
\draw[->] (D.east) -- (Init);
\draw[->] (D.east) -- (Proc);
\draw[->] (D.east) -- (Res);
\end{forest}
\end{document}

[{{\scshape Initiator}\\John} ]use[{\scshape Initiator} [ John ]]. But this is not really appropriate, since John isn't a terminal node in the tree. So if you really must show structure there, I would use[{\scshape Initiator} [ John,roof ]](this is usingforestsyntax). Thetikz-qtreeversion would be[.InitP [.{\scshape initiator} \edge[roof]; John ]– Alan Munn Dec 08 '17 at 11:58tikz-qtree. You can make a negative sibling distance:\begin{tikzpicture}[baseline,sibling distance=-15pt] ...will reduce the branch widths substantially in this example without sacrificing readability. You can also add a negativexshiftto the picture to shift the tree leftwards a bit. Forest trees are optimized for compactness, (as you can see) so there's less you can do to make them more compact. – Alan Munn Dec 16 '17 at 16:54