The unnecessary space on the left side of the tree comes from the fact that the \Tree is inside a \node (which in turn is inside a \matrix that only holds a single node). If you remove the \node{...}; from your code, the unnecessary space disappears:
\documentclass{article}
\usepackage{tikz-qtree}
\begin{document}
\tikzset{edge from parent/.style=
{draw, edge from parent path={(\tikzparentnode.south)
-- +(0,-8pt)
-| (\tikzchildnode)}}}
\begin{tikzpicture}
\matrix
{
\Tree
[.{}
[.{Robert - Margaret}
[.{Peter - Mary}
[.{Mary - W.P.}
[.{May - Robert}
[.{Robbie - Audrey} [.{Joan - Ewan} Isla ] [.{Gillian - Danny} Kenneth Joni Sarah Ruari ] [.{Angus - Michelle} Kirsteen Mikey ] ]]]
[.{Margaret} ]]]
[.{Robert - Janet}
[.{John - Anaple}
[.{Robert} ]]]]\\
};
\end{tikzpicture}
\end{document}
Alan's answer can be adapted to work without the \matrix and the enclosing \node (trees can be shifted using scopes, which is also the way it is done in the examples in the TikZ-qtree manual):
\documentclass{article}
\usepackage{array}
\usepackage{tikz-qtree}
% command to ensure the line connecting a marriage is centred
% change the rule command as needed; the width of the centre
% column should match the width of the rule
\newcommand*{\marriage}[2]{
\begin{tabular}{>{\raggedleft}p{.5in}@{}>{\centering}p{.2in}@{}>{}p{.5in}}%
#1 & \rule[3pt]{.2in}{\pgflinewidth} & #2
\end{tabular}}
\begin{document}
\tikzset{edge from parent/.style=
{draw, edge from parent path={(\tikzparentnode.base)
-- +(0,-8pt)
-| (\tikzchildnode)}}}
\begin{tikzpicture}[]
\Tree
[.\marriage{Robert}{Margaret}
[.\marriage{Peter}{Mary}
[.\marriage{Mary}{W.P.}
[.\marriage{May}{Robert}
[.\marriage{Robbie}{Audrey} [.\marriage{Joan}{Ewan} Isla ]
[.\marriage{Gillian}{Danny} Kenneth Joni Sarah Ruari ]
[.\marriage{Angus}{Michelle} Kirsteen Mikey ] ]]]
[.\node[] (M) {Margaret}; ]]]
\begin{scope}[xshift=6cm]
\Tree [.\marriage{Robert}{Janet}
[.\marriage{John}{Anaple}
[.\node[] (R) {Robert}; ]]]
\end{scope}
\draw (M) -- (M-|R.west);
\end{tikzpicture}
\end{document}
Below is a screenshot of the trees without matrix and node, using Alan's dynamic marriage macro. The nodes and background rectangle are made visible to show where the whitespace comes from. Note that the tree is too wide to fit on the page completely, so one should either try to make the marriage macro more space efficient still, use a slightly smaller font size, or use the \makebox approach described in the answer to Center figure that is wider than \textwidth

\documentclass{article}
\usepackage{array}
\usepackage{tikz-qtree}
\usetikzlibrary{backgrounds}
\newlength{\widestname}
% command to ensure the line connecting a marriage is centred
% change the rule command as needed; the width of the centre
% column should match the width of the rule.
% The width of the left and right columns matches the width of the
% largest name.
\newcommand*{\marriage}[2]{
\pgfmathsetlength{\widestname}{max(\widthof{#1},\widthof{#2})}
\begin{tabular}
{>{\raggedleft}p{\widestname}@{}>{\centering}p{.2in}@{}>{}p{\widestname}}%
#1 & \rule[3pt]{.2in}{\pgflinewidth} & #2
\end{tabular}}
\begin{document}
\tikzset{edge from parent/.style=
{draw, edge from parent path={(\tikzparentnode.base)
-- +(0,-8pt)
-| (\tikzchildnode)}}}
\begin{tikzpicture}[show background rectangle, tight background,every node/.style=draw]
\Tree
[.\marriage{Robert}{Margaret}
[.\marriage{Peter}{Mary}
[.\marriage{Mary}{W.P.}
[.\marriage{May}{Robert}
[.\marriage{Robbie}{Audrey} [.\marriage{Joan}{Ewan} Isla ]
[.\marriage{Gillian}{Danny} Kenneth Joni Sarah Ruari ]
[.\marriage{Angus}{Michelle} Kirsteen Mikey ] ]]]
[.\node[] (M) {Margaret}; ]]]
\begin{scope}[xshift=6cm]
\Tree [.\marriage{Robert}{Janet}
[.\marriage{John}{Anaple}
[.\node[] (R) {Robert}; ]]]
\end{scope}
\draw (M) -- (M-|R.west);
\end{tikzpicture}
\end{document}
\marriage{Robert Balfour}{Margaret Clyde}, but the last names are put on a second line under the first name in the tree. Is there a way to keep the whole name on one line? – yunone Jul 18 '11 at 01:15p{.5in}columns in thetabularwithin the\marriagecommand. But increasing the width of those will mess up the width of the entire tree, the branches will adapt to the total width of thetabular. To see the effect, try changing the width from .5in to 1in. I can't think of an obvious way around this at the moment. – Alan Munn Jul 18 '11 at 03:18\drawcommand. (Thanks, Jake.) You could also adapt the question using the scope mechanism that Jake mentions in his answer. – Alan Munn Jul 18 '11 at 03:25