Например, при объёме данных до 1 мб обходиться обычным массивом
Не всегда, зависит от типа данных и типичных действий над ними. Контрпример: массив текстовых строк общим объёмом текста 1МБ, количеством строк до 30000, средней длиной строки ~33 символа, максимальной длиной строки 1200 символов, основные действия: удаление случайной строки по её номеру, добавление новой строки случайной длины (1..1200) в случайное место. Двухсвязный список (или дерево) строк выиграет перед линейным массивом во много раз (а то и на порядки). Правда человек всё равно не заметит, оба варианта уложатся в считанные миллисекунды.
Файлы всегда лучше читать полностью перед преобразованием (если оно вообще понадобится) в требуемый спецификой вид, если размер файла не превышает половины - двух третих свободной оперативной памяти.
Если файл можно целиком прочитать в память - проблем (в редакторах) и нет. Тем более при современных скоростях работы и процессоров и памяти.
Вопрос что делать когда свободной памяти не хватает для загрузки всего файла (а у меня вот прямо сейчас занято 99% памяти расчётными задачами - это мне что, теперь и 100МБ файлик не отредактировать?! Или мучиться со свопом?).
Ну а ориентироваться на SSD вообще ... некрасиво. Не у всех они ещё есть и не все рабочие файлы лежат исключительно на них. Про внешние USB флешки и SD карты даже и не вспоминаю.
(Оффтоп)
Кстати чтоб Вы знали, далеко не все из драйверов USB/SD поддерживают быстрый произвольный доступ, оказывается читать блоки "вперёд" может быть в тысячи раз быстрее чтения их же "назад" (сам лично не наблюдал, утверждение от человека, для которого писал стороннюю утилиту, мне пришлось подчиниться и переделывать программу под доступ только "вперёд").
Смотря какая обработка данных предполагается. Если 1 действие в секунду в редакторе, то терпимо. А при нормальном уровне в 180-300 зн./мин. (это будет 3-5 действий в секунду)
При средней длине абзаца (который в памяти представлен одной строкой) в пару-тройку строк или 100-200 символов это будет всего лишь 2-4 действия в минуту - обычно не требуется сохранять каждый набранный символ сразу в файл, достаточно сохранять готовые строки.
А вот нажатия клавиш PgDn, PgUp могут быть до 30 в секунду и каждая потребовать чтения до 50 строк (причём для PgUp - назад по файлу!), при размерах строк даже полстраницы это уже полтора мегабайта в секунду, если файл сильно размазан по диску, то все ~400 блоков по 4КБ будут читаться за 9-13мс каждый, т.е. порядка 4с, вместо ожидаемых 30мс! На два порядка медленнее необходимого! И тут уж никакое усложнение структуры данных не спасёт, только или загрузка файла в память или кэш (в том числе системный). Это конечно аномалия, но вполне возможная.
В общем, надо чётче ограничивать задачу и потом уже подбирать варианты решений.