This is to confirm that the issue is caused by this typehaead bug: https://github.com/twitter/typeahead.js/issues/1218
As suggested by joekur in the issue report, I solved replacing this:
rendered += suggestions.length;
that._append(query, suggestions.slice(0, that.limit - rendered));
With this:
suggestions = suggestions.slice(0, that.limit - rendered);
rendered += suggestions.length;
that._append(query, suggestions);
I marked my own question as duplicate of this: TypeAhead.js and Bloodhound showing an odd number of results It's the same problem, I just cannot find it before due to different wording
HTH.