I would do it like this:
find "$logfolder" \( -name '*.log' -o -name '*lst' \) -printf "%TB\t%TY\t%p\n" |
awk '$1==m && $2==y' m="$month" y="$year" | cut -f 3-
Explanation
By grouping the two -name calls in parentheses, you can combine them with the -o (or) flag. This will make find look for either .log or .lst files. The -printf (a GNU extension) prints the file's modification month (%TB), then its modificatinmodification year (%TY) and then its namepath (%p), with a tab (\t) between each field.
The awk simply checks that the 1st field (the month) is the same as $month and the second is the same as $year.
The cut removes the first two fields (the month and year) and prints everything from the 3rd field on.
I tested the above by creating files modified in December 2012 (and set $month to "December" and $year to 2012):
$ touch -d "December 13 2012" {a,b,c}{.lst,.log}
$ touch c.lst a.log ## c.lst and a.log now have today's modification date.
$ find $logfolder \( -name '*.log' -o -name '*lst' \) -printf "%TB\t%TY\t%p\n" |
awk '$1==m && $2==y' m="$month" y="$year" | cut -f 3-
./b.log
./c.log
./b.lst
./a.lst
To get the names alone, you could pipe(note that throughit assumes file and directory names don't contain newline characters).