A custom String Builder implementation
public class NoksStringBuilder {



When told that something implements StringBuilder, I would expect it to implement the same interfaces.  

public class NoksStringBuilder implements CharSequence, Appendable, Serializable {


This way it can be used as a replacement for a StringBuilder used in more generic circumstances.  


    String[] stringList = new String[INITIAL_SIZE];



You call this a stringList, but it's actually a String array.  If it were an actual List, you could quit mucking around managing capacity.  

      List&lt;String&gt; strings = new ArrayList&lt;&gt;();


This would push all the memory management off onto the List.  But I actually don't think that anything involving String is correct here.  More on that later.


    public void add(String s){



Similarly, I would call this 

    public Appendable append(CharSequence csq) {


Then you could use it the same way as with a real StringBuilder.  Or you could use it the way you do your method (realizing that a String is a CharSequence).  

All this would make obvious that an array of String is not a good way to hold a StringBuilder.  For one thing, while it makes for a quick append of a String, it works less well with letters and you lose the random access aspect.  I'd probably try 

    private char[] sequence = new char[DEFAULT_CAPACITY];


That puts more work into add but makes toString simpler.  

    public String toString() {
        return new String(sequence, 0, length);
    }


Note that length is an object field that you'll have to maintain.  It's the equivalent of your characterCount.  

Note that if you want to implement capacity(), you could just say 

    public int capacity() {
        return sequence.length;
    }