frictionless.validate treats "UTF-8 with BOM" as simply being UTF-8, which is not always correct; sometimes it is closer to ISO-8859-1 encoding.
If a non-UTF8 character appears in a file after the first 10000 characters (ie the default sample size), then this will result in validate failing with an encoding error.