The 802.11b spec says devices should choose the strongest signal but it is up to the devices to do that. The spec doesn't say how long that should take or what the algorithm or switching points should be, so that is up to the designers to figure out. One of the problems with 802.11b is that a slow device can cause the entire AP to run at a slower baud rate and so signal strength doesn't really always tell the entire story of which AP would be "best". Your -48dB close router might be running a 1Mb/s channel for a slow device while your -80dB AP might be running at the full 11Mb/s. I do not think Photon does this but it is possible. The 5GHz 802.11 specs have largely fixed this problem.
I have more than 20 AP's in "view" at my house and I have had to carefully select channels for my three APs (with three SSIDs) to coordinate. Even then my phone sometimes makes a less good choice and I have to manually switch it to another SSID, so I don't think this problem is limited to Photons.
In Photon, I believe that all SSID/BSSID selection happens inside the WICED stack which Particle cannot show you but if agree to a non-disclosure at the Cypress site you can look at the WICED stack there too. I can certainly believe that it tries the APs in some order (maybe last one first or other choices as @Moors7 suggested) and decides to switch using some algorithm. You can research this if you want.
Finally I don't know of a way to make a device associate with a particular BSSID other than by blocking certain MAC addresses in the access point you don't want to associate with (not in the device). I think if the device has the credentials, it can and will negotiate for an AP using its own algorithm about what it thinks is best.