The join is ok. Another option is to use the separator inside the agent output header.
Example <<<plugin_name:sep(0)>>>
this will tell CMK that is should split the output at ASCII 0 and not at ASCII 32 what is the default. As you will not have ASCII 0 inside your string you will get every line already as one string and don’t need the join.
You can also remove the if not line.startswith("<<<"):
line as the header from you plugin output is already removed from CheckMK.