I think what is important, or helpful to know is when a format uses indexes and what types. Any text based formats like GeoJSON, XML/GML don’t (usually) have an index. So a spatial filter or even selecting the number of features to read have very little to no effect on performance. As I understand it FME still needs to actually create the features in order to do the spatial check on them. There may be a litte more smarts though under the hood with FME’s GML reading. For example if a spatial filter is used will FME skip out creating the attributes and only create attributes in the case where there is a spatial match?
Compare that to a database which has been nicely indexed or even a shapefile with it’s external file indexes, the FeatureReader will be able to leverage these indexes to speed up reading dramatically.
You can see from a formats quick facts if Spatial indexing is used: https://docs.safe.com/fme/html/FME-Form-Documentation/FME-ReadersWriters/gml/quick_facts_gml.htm. This isn’t always helpful though because there are some formats (like GeoTiff) which FME lists as not having a spatial index, however, due to the nature of the format, reading with a spatial filter is almost always faster. I’m sure there are likely also cases when a format does have a spatial index but for whatever reason FME struggles to support it properly.
I think in general though, using a spatial filter like this, is super helpful even for formats which don’t use indexing, if only to reduce the amount of features which need to get cached.
Typically when working with spatial GML data it’s really helpful to tile the data and include the grid index and tile size in the file name. This way you can use the filename as a bit of a filter. This of course comes with it’s own headaches - for example clipped features which need to later be stitched together.