I’m not absolutely sure but I think you get into evaluation order problem. As far as I aware properties are valuated before Items ( see Property and Item Evaluation Order in http://msdn.microsoft.com/en-us/library/dd997067.aspx) If you can try to move property group from “global” under install target. It should work.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(Project-to-import)" Condition="'$(Project-to-import)' != ''" />
<ItemGroup>
<RuntimeProj Include="C:\TEMP\Design.proj" />
<DesigntimeProj Include="C:\TEMP\Run.dproj" />
</ItemGroup>
<Target Name="install">
<PropertyGroup> <!-- Flatten out the items to properties. -->
<RuntimeProj>@(RuntimeProj)</RuntimeProj>
<DesigntimeProj>@(RuntimeProj)</DesigntimeProj>
</PropertyGroup>
<Message Text="Hello world!"/>
<MSBuild Projects="$(MSBuildProjectFile)" Targets="BuildRunPackage"
Properties="Project-to-import=$(RuntimeProj)" />
<MSBuild Projects="$(MSBuildProjectFile)" Targets="BuildDesignPackage"
Properties="Project-to-import=$(DesigntimeProj)" />
</Target>
<Target Name="BuildRunPackage">
<CallTarget Targets="Clean" />
<CallTarget Targets="Build" />
</Target>
<Target Name="BuildDesignPackage">
<CallTarget Targets="Clean" />
<CallTarget Targets="Make" />
<CallTarget Targets="Register" />
</Target>
</Project>