Explanation from sitecore support: 

*Campaign is supposed to be triggered only for the landing page (the page which was the first in the visit). When a visitor triggered a campaign, the system sets the CampaignID for the current visit. If the visitor triggers campaigns on subsequent pages or another campaign on the same page, the campaign events will still be registered, but the system will not change the CampaignID for the current visit.
So the expected behavior in your case will be following: campaign based personalization will show correct rendering only if you access the landing page in the separate incognito windows (different sessions) for each campaign ID.*

It validates the explanation of @Marek Musielak

We decided to avoid to create one page for all campaigns.
We'll create one page by campaign.

Thank you !