Efectivamente existen algunos problemas con el RecordCount en Interbase y en Firebird (no he probado con otros motores).
Al parecer una de las bondades de estos motores es realizar una especie de retorno de registros a petición, ésto nos permite ahorrarnos tiempo de procesador (de servidor), y reducimos el tráfico de red ... por supuesto casi todo lo bueno viene acompañado de algo malo
.. y esto no es la excepción.
Al ejecutar
Last estamos forzando al motor a que nos retorne todos los registros, razón por la cual la propiedad RecordCount toma su valor real.
Con algunos otros motores como Access o Paradox esto no pasa porque cuando se hace una consulta se obtiene de entrada la totalidad de los registros.