I have had limited success using the above method. Out of four stays using that exact method, only two were automatically counted towards my MegaBonus promotion. For the other two stays, I had to contact Marriott to have the nights show up in my promotion tracker.
My theory is that whoever checks you out has an option in the system to mark either of your cards as the primary card. Some folks might think "this guy checked in and closed out his folio using the Visa, so I'll show him having paid using a Visa", whereas others might think, "this guy paid $500 using an AmEx and only $2 using a Visa, so I'll show him as having paid with an AmEx." Does anyone know if that might be the case?