Solved! After having spent countless hours trying all king of possibilities... The pointer!
This works: lcd.print(*note); no matter how many lines I print to the I2C LCD. Without the asterisk, the data was corrupted randomly when I printed more than two lines.
You are masking the issue
*note is of type char, which is just a single character (which works in this particular case) . I suspect the original string is probably not null terminated?
Edit: Umm table of strings looks fine, "note" probably needs validation then:
And to resurrect tabs vs spaces... Another point for spaces