So far, we have only "hard" dependencies, thus building or running fails, if these dependencies are not resolved. It would be useful if we had also "soft" dependencies (such as seen on Debian), where ebuild authors could suggest the emerging of additional, optional ebuilds which are not necessarily required for a proper compilation/function of the ebuild. It should be possible that users make their choices before the emerging really happens, thus at the beginning of a whole portage session/transaction. Thus soft dependency checks (user interaction needed) should be done recursively at the beginning of a session to not interrupt the nice automatized emerging of ebuilds.
Is this not the functionality provided by USE variables or am I misunderstanding what it is that you want to accomplish?
this is indeed planned for the new USE functionality in portage v2