Your figure shows 3 columns. Because of the timestamps, the saved LSL data is supposed to have one more column than what you choose in the LSL menu of NIMH ML. Is that the case in your data file? Did you choose 2 LSL streams to save?
No. What I said above is still applied and it is possible to get a different number of samples. However, the difference should be 1 or 2 samples at most.
If you are doing ITI recording, negative timestamps are also possible since new samples may be added while moving the retrieved samples to NIMH ML during ITI. The number of those samples should not be many, though.
-----
From the data you provided, I think the opensignal software collects 150 samples and sends them together as a block to LSL, instead of sending one single sample 150 times. This causes the synchronization problem. If a trial ends between the update cycles of the 150-sample block, the length of the LSL data will be shorter than the eye data because some portion of the LSL data is not updated yet. It can be longer in the next trial though, since the portion not received in this trial will be added to the next trial (if ITI recording is turned on).
In this case, the first column of the data (i.e., LSL timestamps) is useless; those numbers do not show the sample intervals. It seems that the Bioplux people expected this, since they added their own timestamps to the data. I think the second column is the timestamps they added and the third column is the sensor values.
Although GSR data is being sampled at 1 kHz, it is uploaded to LSL only at ~6.7 Hz (= 1000/150), so the sync accuracy between the LSL and eye data will be limited.