Ok, I now made the following patch:
\usepackage{etoolbox}
\makeatletter
\patchcmd\TY@checkmin
{\def\TY@ratio{1}}
{%
\@tempdima\dimexpr\p@*\TY@linewidth/\TY@tablewidth\relax
\edef\TY@ratio{\strip@pt\@tempdima}%
}{}{}
\let\TY@@checkmin\TY@checkmin
\makeatother
which seems to do what I want:

Still, the calculation doesn't seem to be as exact as it could be and I'd like to know whether there is a more suitable solution.
Furthermore, I'm more or less undoing an explicit special case from the package code, so I assume it was there for a reason ;-)
Edit
Note that tabulary still behaves differently from tabularx in this case. See for instance
\begin{center}
\begin{tabulary}{\textwidth}{|L|L|L|}
foo foo foo foo foo foo foo &bar&baz
\end{tabulary}
\end{center}

So even when "spreading", the column width is still proportional to the amount of material in the column, which seems to be a good thing to me.
tabularywon't make a column wider than needed. It first typesets the table as if it werellland then sets the widths only for columns that need to be set as paragraphs. – egreg Dec 15 '12 at 11:33tabularyas a more intelligenttabularxandtabularxdoes spread out. – Stephan Lehmke Dec 15 '12 at 14:08foo&bar&\lipsum[1]to see what happens. – egreg Dec 15 '12 at 14:12tabube an alternative:\begin{tabu} to \textwidth {|X[l]|X[l]|X[l]|} foo&bar&baz \end{tabu}? – cgnieder Dec 15 '12 at 14:33tabudocumentation, theXcolumn fromtabuwill behave as intabularx. Will it adapt to the content width as intabulary? – Stephan Lehmke Dec 15 '12 at 15:25\begin{tabu}to\linewidth{X[-1,l]|X[-1,l]|X[-1,l]}(not sure, though) – cgnieder Dec 15 '12 at 15:36