It would seem that instead of creating a "bundle" (which seems to be a rather magic thing), it might be easier to just create an empty module that depends on the modules it should bundle.
Modern CPAN installers like App::cpanminus are quite capable of actually installing recursive dependencies, so the first installing attempt should succeed.
<update> It seems that what I suggested is implemented as Task, so maybe an autotask script would be in order? </update>
Granted, it neither answers your question (I don't have a tool that does it automatically) nor does it solve the problem of modules being compiled conditionally, but maybe it gives you food for though.
What you seem to want is a topological sort of the depency graph - maybe Sort::Topological and the data from http://deps.cpantesters.org/ could help you here.