It is probably because the data is arriving byte-by-byte rather than in all-at-once blocks or lines, and sometimes you (or the library you're using to get the serial data) read it when only half of a line has arrived, and the remainder of the line is picked up by the next read.
A solution is to add each read to a buffer, and then get the lines by searching for the end-of-line, eg something like:
Buffer$ = Buffer$ & IncomingData$
Do 'in a loop in case Buffer$ contains more than one line
P = Instr(Buffer$, Chr$(13)) 'look for end-of-line character in buffer
If P = 0 Then
Exit Do 'exit loop if doesn't contain whole line
End If
WholeLine$ = Left$(Buffer$, P - 1) 'get line (without end-of-line character)
Buffer$ = Mid$(Buffer$, P + 1) 'remove line from buffer
HandleLogLine(WholeLine$)
Loop