Out of time to implement page breaking but this answers the request for a basic measurement scheme that does a tabulary style (well slightly similar:-) determination of the column widths without setting the table.
The macro measures each of the two arguments and then calculates column width so they have similar height when set. At that point (where the comment is in the code) you can do what you like, for tonight it just sets them in a \vtop (\parbox[t]) of the specified width, so page breaking would not be allowed within the paragraph.
The \ifdim tests prevent either column being set to less than 20% of the textwidth
which is an arbitrary amount that could be changed but you need to avoid badly unbalanced input setting silly lengths like 1pt so some cut off is advisable (cf \tymin in tabulary)
Incidentally if you know that the content is all text so the baselines are naturally evenly spaced and matched in each column, it would be much easer to do page breaking rather than if the content can include boxes or as here display math that mean the potential break points in one column do not automatically line up with the break points in the other column.

\documentclass{article}
\usepackage{graphics}
\makeatletter
\long\def\twopara#1#2{%
\@tempdima\dimexpr\textwidth-\columnsep\relax
{\hbadness\@M\raggedright\hsize.5\@tempdima \@tempdima\hsize
\setbox\z@\vbox{{#1\endgraf}}%
\setbox\tw@\vbox{{#2\endgraf}}%
\Gscale@div\tmp{\ht\z@}{\dimexpr\ht\z@+\ht\tw@\relax}%
\global\let\xtmp\tmp}%
\dimen@ \xtmp\@tempdima
\ifdim\dimen@<.2\@tempdima \dimen@.2\@tempdima\fi
\ifdim\dimen@>.8\@tempdima \dimen@.8\@tempdima\fi
\dimen@ii\dimexpr\@tempdima-\dimen@\relax
% do anything you want with
% #1 \dimen@ wide
% #2 \dimen@ii ide
% \columnsep in between
\hbox{%
\vtop{{\hsize\dimen@ \textwidth\hsize #1\endgraf}}%
\hspace\columnsep
\vtop{{\hsize\dimen@ii \textwidth\hsize #2\endgraf}}%
}}
\makeatletter
\begin{document}
\noindent X\dotfill X
\twopara{
a a a a a a a a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a a a a a a a a a a a
}
{
b b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b b b b b b b b b b b b
}
\bigskip
\twopara{
a a a a a a a a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a a a a a a a a a a a
}
{
b b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b b b b b b b b b b b b
\[a=b\]
b b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b b b b b b b b b b b b
}
\end{document}