Строка - 5000 символов ... Я не думаю, что скорость действительно важна, если вы не делаете это тысячи или даже миллионы раз, особенно когда ОП даже не упоминал, что скорость важна. Преждевременная оптимизация?
Я бы, вероятно, использовал рекурсию, так как, на мой взгляд, это приведет к простейшему коду.
Это может быть не правильно, как я знаю .NET, но не C #.
String ChunkString(String s, Integer chunkLength) {
if (s.Length <= chunkLength) return s;
return String.Concat(s.Substring(0, chunkLength),
ChunkString(s.Substring(chunkLength)));
}