If I may, a pure Awk command is twice faster:
awk 'BEGIN {FS = "\t" ; OFS = "\n"} {header = $0 ; getline seq ; getline qheader ; getline qseq ; if (length(seq) >= 21 && length(seq) <= 25) {print header, seq, qheader, qseq}}' < your.fastq > filtered.fastq
Like your solution with paste, it assumes that a fastq record takes exactly 4 lines.
Edit: deal with spaces in sequence names, as suggested by brianpenghe.