Илья, одобряю ваш вариант! Строка - это строка, компоненты строки - это компоненты строки. Всё чётко и понятно. Назначение первого символа разделителем позволяет однозначно закодировать хоть ноль компонентов, хоть один, хоть сколько. Даже можно автоматически выбрать разделитель такой, какой не встречается ни в одном из компонентов. Нужно только дополнительно принять, что ноль не может быть разделителем, чтобы не путать это с пустой строкой.

Ноль гораздо хуже ввиду неоднозначности: тут один ноль конец строки, там - два нуля конец строки. Чуть что перепутал - улетел за границу массива в неведомые дали (особенно в Си; в Обероне полегче с этим).