I don't see why charlieplexing should end up overly difficult. It should be pretty easy to produce charlieplexing "infrastructure" that allows your main code to look like
for (i=0; i <144; i++) {
charlie_led_off(i-1);
charlie_led_on(i);
}
It might not be the smallest code "behind the scenes", but that isn't necessarily an issue that one should worry about. Code to manipulate a 20led two-dimensional charlieplexed array fits easily on a 1kbyte ATtiny11, for example.
I've been thinking about a generalized led array code generator sort of application and library that would create code for you given an array size (in one to three dimensions), a wiring scheme (multiplex, charlieplex, etc.) and so on... It all depends on how quickly people outgrow blinking lights. (*I* still haven't outgrown blinking lights! The other project that would be neat is the beginning electronics book "how to make blinking lights"...)