My only proper experience with block braking is from railway engineering, but I believe a coaster to work mostly the same. From that, I think I can picture a possible series of events that could lead to an accident like this:
I assume that the coaster has some sort of "default mode" when the system boots (AKA gets turned on for the first time in the morning). All blocks (at least those outside the station) would be marked as clear. If the blocks in the middle of the track were assumed to be occupied when the system boots up, it'd be impossible to send a train around, since the system would believe every block to be occupied until told otherwise, and you could only "tell it otherwise" by moving a train past the sensor.
There's a weakness to the block system, though: The coaster has no way to know where the trains are located, until they pass a sensor. The sensors would be located at the borders between each block, since there would be no need to have any sensors in the middle of a block (that would effectively only split the block into two half-blocks, without a brake in between). In other words, the system can't tell exactly where the trains are at any time, it can only tell when it passes a sensor. Everything that happens between the sensors is a complete mystery. The coaster can know whether a train has entered a block or exited it, but it can't explicitly tell whether there is a train in the block or not.
A block is only marked as occupied once a train enters it (by leaving the previous block). If the system is running, the block remains marked as occupied until the sensors at the next block border register a train passing. Meanwhile, the block brakes will only allow a train to pass if the next block is clear. This is normally a pretty good system.
A system reboot, though, might have set the coaster back in "boot mode", where all blocks are clear, maybe with the exception of the station and station brakes (as that would be the logical place for the trains to be located when the coaster starts up in the morning). The system won't then be able to determine that the track is obstructed, and it sends a train through as if every block is clear, because no block is determined to be occupied until a train passes the sensor. As such, it routinely dispatches the train on the lift hill, sending it into the next block, without knowing there's already a valleyed train in there. Cue collision.
So what might have happened would be a reboot happening after a train was dispatched. Why, I have no idea. The train is resting on the lift hill, the coaster refuses to send it further, and somehow the system is rebooted. The restart, taking a few minutes, wipes the memory of all the blocks, and marks them all to be clear. Once that is done, the train on the lift hill is sent into the next block, where a valleyed train is sitting.
If so is the case, well, it'd be a serious break of procedure. Either human error (which would be grave negligience) or the system itself rebooting on its own, maybe after losing power. Since the system can't determine whether a block is occupied or not upon startup, the boot procedure should involve a check to see if everything is clear. In hindsight, the best way to do this would be to have the system mark every block as occupied once the system boots, requiring a flip of an override switch for every block - and the switches would be located only next to the sensors, forcing a proper track walk when the system starts up. Inconvenient as heck, but it'd make the boot procedure a lot safer.
Of course, a system relying entirely on block sensors is pretty bare-bones, and that sounds too simple to me, considering the inherent flaw described above and the availability of redundant systems. I believe there might be backups. There could be a secondary system sending a weak electric current through the rails, ensuring that the track forms a complete circuit. Any trains in the block would short-circuit the system, signalling that something obstructs the block. A system of this fashion is used on some railway lines, though I'm not sure if coasters could do the same, due to polyurethane wheels being a poor conductant and possibly unable to short-circuit the current.
One might work out something with acoustic pulses instead, since the presence of a train would clearly interrupt any signals (the "echo" of the track, if you'd like). Still, so would rain or wind or (I believe) material expansion or contraction due to temperature, so a system like that, unless carefully calibrated, would produce a lot of false error messages.
You might even work out a system with a magnet on every train, inducing a weak electrical current in the rails as it goes. This would send a signal to the sensors that a train is in the block, but if the train were to stop, there'd be no induced current.
Either way, there should be a backup. Something that'd make the "uhh, something's amiss" lamp blink. It should not be possible to miss a valleyed train, and it should not be possible for a recently booted system to automatically assume everything is clear. It's hard to make a system capable of making a proper inspection, though, so it is dependant on a human telling everything is ready before a train can be dispatched. If said human tells the system everything is ready before inspecting, though - which might have no consequence 99 times out of every 100 - a mistake is ready to happen.
Either way, it's almost dead certain that the riders themselves were not at fault. Too bad for them, they were just sitting in the wrong chairs at the right time, literally wrapped in security measures ensuring them everything would be safe. It very sad to see a system like that fail, and doubly so when the consequences were bore by innocent people who had no agency over the outcome. What reason did they have to not think they were perfectly safe? What could they do, once they realized something was amiss? Nothing, that's the answer to both questions. And now they're suffering for it. Hopefully, they'll be fine again, and soon.