Is it just for the simplicity of your networking? One strategy is to define your IPv4 space inside one of your IPv6 networks such that you have dual addressing with directly mappable addresses.
Do you have some other use case than just simplicity of design?
Also, having instances connect to IPv6 parts of the internet while you can see which subnet of your vpc the traffic originates from, and maybe filter on that fact.
Having routable addresses is a different thing than them being public or private, which is determined by the fact if you accept traffic to them or not when it arrives at the last hop before entering your vpc.
That's how I tend to use AWS at the moment, with IPv4. Almost every resource (except AWS services) has a public IP assigned, few have open inbound security groups, most have open outbound security groups (but the option to restrict is handy).