I saw a few posts describing this issue so I'm creating a new post with all the info.
I made a new SD card with Arch Linux inside it. Two partitions, one for the boot and another for the root file system, as I say in the howto page.
My BBB has the default Angstrom distro in its emmc and it is working. With no SD card it will boot into Angstrom.
Now if I insert my SD card and don't press the BOOT button, the 3 first LEDs will light but then it will hang, nothing happens.
If I press the BOOT button then it will boot from my SD card.
So I went back and booted from emmc, no SD card. I checked the devices names, the emmc will be /dev/mmcblk0. If now I insert the SD card it will go into /dev/mmcblk1.
If I press the BOOT button and boot from my SD card, then the SD card will be /dev/mmcblk0 and the emmc will be /dev/mmcblk1. Aha! Pressing the BOOT button in fact inverts the devices names!
Looking at the git history for uEnv.txt I can see that it used to handle these device name changes but now it is only one line long with "optargs=coherent_pool=1M". Why?!?
I still have no solution for this but it is definitely related with device names and uEnv.txt default behavior.
Please post any solutions here, I'll try to find one solution myself. A final solution that can be ported into the git repository.