The problem is not filtfilt but using the same filter on a signal it was not designed for. If you used the filter designed for the original signal on the downsampled signal, the filter output will change, regardless of the filtering algorithm (such as filter or filtfilt) used. Discrete filters have to be designed for the signals they are expected to filter.
The reason is straightforward. The filter passbands and stopbands exist on the interval (0,pi), where pi is defined as the Nyquist frequency, equal to half the sampling frequency. When you change the sampling frequency by downsampling the signal first, you change the filter passbands. So for example if you designed a lowpass filter with a stopband of 0.5*pi with a sampling frequency of 1000 Hz, the stopband will be 250 Hz (half the Nyquist frequency of 500 Hz). If you then use the same filter to filter a signal with a sampling frequency of 5000 Hz, the filter will now have a stopband of 1250 Hz (half the Nyquist frequency of 2500 Hz).
So you either have to completely re-design your filter to be appropriate for the downsampled input, or downsample after filtering. I would downsample after filtering, since discrete filters tend to be more efficient at higher sampling frequencies, although the filters are necessarily longer.
Best Answer