It should work all the time with the grabber and most of the time with OTA. I use $q instead of $3q, but the code path for determining movie is the same.
It checks the category for "film" or "movie". That should exist for any feature film, short film, or tv movie.
Were the other films placed in to the tvshows directory? Or elsewhere? Perhaps they are using a different recording profile?
When recording, if debug is enabled then it will log "is_movie = x" if it is using the $q/$[123]q specifiers.
If you keep the imported epg xml files then you can check the entry for one that failed and one that worked and post them here. (Doesn't matter which channel you post since the details should be the same).