Forcing each user to maintain an always-online machine is not really a good solution compared to just... having the history available to everyone, always.
running 2 programs to provide another higher level interface? not really.
IRCd - real time, ram buffering of messages. Quassel - reads and stores buffers in a database, allows users to retrieve them.