Print limited previous lines from a file
private int size;



I would find this more consistent with other Java classes if it called this capacity rather than size.  

    private int capacity;


The size is typically the number of elements currently in the data structure.  


        this.innerStore = new ArrayList&lt;&gt;();



This could be 

        innerStore = new ArrayList&lt;&gt;(capacity);


While you can use the this. there (perhaps to make it obvious that it is a field), you don't need to do so as it is not ambiguous as to which innerStore is involved.  

Passing the capacity (or size) initially tells it how big the structure will grow.  This saves having to do multiple allocations.  

You could also do some extra work and use an array here.  Of course, with an array, you have to manually keep track of where you are in the array.  For a queue, you would normally use the array in circular fashion, overwriting the oldest entry and returning to the beginning after reaching the end.  


    boolean add(String s){
        if(innerStore.size() == size){
            innerStore.remove(0);
            innerStore.add(s);
            return true;
        }
        innerStore.add(s);
        return true;
    }



This could be just 

    boolean add(String s) {
        while (innerStore.size() &gt;= capacity) {
            innerStore.remove(0);
        }

        return innerStore.add(s);
    }


The other way, if you passed the maximum capacity, it would stop enforcing it.  

You don't need to add and return twice.  Once is plenty.  

You shouldn't always return true.  If the internal add fails, you should return false.  Returning the result of the internal add accomplishes this exactly.