so, similar to @AndyCap , Ive also seen that wifi is unlikely to start up , unless you manually intervene.
and today, I think ive stumbled across the reason - though, as yet not a solution
so, I believe the reason wifi fails to come up, is to do with dhcp.
my understanding is that dhcp, somewhere in the stack, relies upon a real time clock, which BBB does not have.
I think mainly , because ip are leased to a certain time, as you can see in /var/lib/dhcp
so the reason I think it works when you log in via usb and then ifdown/ifup, is because, when you create a usb network (which is not using dhcp) , this also means ntp can reset the time.
so viola now the time is correct on the board, wifi (or more importantly dhcp) can now work.
the question is, I guess, can we tell dhcp/dhclient to ignore the time, and just get us a new lease - regardless.
that is perhaps not brilliant either, as its likely we will get a new ip each time, but hopefully we are using the hostname anyway, so not too bad...
other than that, I think im going to fix the IP address for now
(interestingly, I remember before having issues with ethernet too which is logical , as again its down to dhcp rather that wifi/eth0 ... but I thought i 'fixed' that by adding a longer timeout)