Интересный вопрос. Научной литературы на эту тему у меня под рукой нет, но люди пишут, что суффикс -цк (-ск) часто использовался славянами для названия городов по имени реки. Например: Полоцк, Липецк, Курск, Свияжск и т.д. Все они образованы от имен рек: Полота, Липовка, Кур, Свияга и т.д.
Из приведенных Вами примеров Иркутск и Донецк также образованы по той же схеме (реки Иркут, Донец).
Новосибирск (изначально Ново-Николаевск) к названиям рек не имеет никакого отношения -- но это уже гораздо более поздняя эпоха (город появился на рубеже XIX-XX вв.). В то же время, любопытно, что в названии Донецка древняя традиция соблюдена -- город назван по реке, хотя свое нынешнее он получил уже при советской власти.