The example trace with higher and lower peaks is from an android blinkup, which uses white and gr[ea]y to clock data as Android devices can’t maintain regular framerates as well as iOS devices can. An iOS blinkup will look more like the one you posted - max light levels the same. Either way it seems like you should have more gain in your setup, which on anything aside from an imp005 means increasing the resistor value.
The blinkup algorithm can work with swings down to the 0.1x level (~0.3v swing), which is why you’ve not had issues, but the more margin the better - but saturation is bad for Android blinkups, hence the tuning process.
The 005 values look just plain strange, I suspect that this is because the example blinkup capture code disables blinkup and the 005 blinkup circuit takes time to get going, hence you can’t read hardware.lightlevel fast enough on that platform. Try enabling blinkup in the example code, then - when you do the blinkup you want to sample - ensuring you move the phone away before the blinkup completes so the device doesn’t see a valid packet and end up being blinked up inadvertently. You should then see a waveform much more like the ones you capture on other devices.
We do call out blinkup tuning being a required thing in the design guides, but often people see it working and skip that. This is generally not the best idea for field compatibility.