Thanks Robbert :P
Kris, you are correct in your understanding, but it is due to cookies and the support of 'third party' cookies on different browsers/ platforms.
If you have www.customer.com (Sitecore) and shop.customer.com (PHP with FXM) when the user requests the first site a cookie will be created by Sitecore, this will contain your contactid that Sitecore uses for identification.
If i now switch to shop.customer.com then, as its on the same top-level domain (.customer.com) i am able to access the cookie and retrieve the contact info we need.
If the site was called www.customershop.com then its down to the browser being used as to whether we can access the cookies or not as this other domain is seen as 'third party'. This problem is subtle as it depends on what browser you are using and some other conditions and is slightly out of the hands of Sitecore to work around as its a vendor decision.
We have a matrix that explains the compatibility we discovered and it can be found here : doc.sitecore.net/.../browser%20and%20session%20compatibility%20in%20fxm
If a contact cannot be found then a new session is created, so this means that visits and goals etc will be be registered but the contacts will be seen as separate.
If you can generate the contact cookie (from a login etc on the non-sitecore site) then it can be read by FXM and used.
Hope that helps :)