стринга хранит значение в utf-16, ты че ожидал?
не совсем так, дарт выбрал utf-16 в качестве внутреннего формата хранения, это не значит, что все строки долдны быть в такой кодировке. При передаче куда-либо (например по сети) может потребоваться ее перекодировка. передаются именно байты, обычно с указанием кодировки, чтобы на принимающей стороне поняли как из этих байт восстановить строку. По все видимости в dart нет встроенного декодера cp1251, а MultipartRequest - это просто хелпер, который передает всегда в utf-8. Чтобы передать в cp1251 нужно написать свой хелпер