I have found out the problem with Cells on abcl after a bit of debugging.
The function c-unlink-useds in link.lisp uses delete, which somehow destructively modifies something it should not - the list of useds gets one item shorter (not the list inside the cell but the list "useds" in c-unlink-unused, which apparently shares structure with the list inside the cell, but who knows). Replacing delete with remove does the trick. I don't know if this is caused by abcl's delete being buggy but I doubt it, since the implementation of delete in abcl is taken from cmucl, and that should be bug-free enough ;) however, I'll investigate this further.
(Thomas, I saw you at the ELS but in the end I didn't want to bother you with this - I wanted to keep the fun for me ;) thanks for your offer of help, anyway).
So now tests appear to pass. And, apart from using remove and adding a few read conditionals, no changes to cells are required for it to work on abcl. Abcl itself needs to be slightly modified (it needs to expose a couple of internal MOP functions). I'll talk to the devs about incorporating these changes on trunk and hopefully in the coming 0.15 release of abcl.
Bye, Alessio S.