I had the same question.  There is a pager built in to the pydoc module.  I incorporated it thusly (which I find hackish and unsatisfying... I'm open to better ideas though).
I like the idea that it would autopage if there are more than x results and paging is on, which is possible to implement, but not done here.  
import cmd
from pydoc import pager
from cStringIO import StringIO
import sys
PAGER = True
class Commander(cmd.Cmd):
    prompt = "> "
    def do_pager(self,line):
        global PAGER
        line = line + " 1"
        tokens = line.lower().split()
        if tokens[0] in ("on","true","t", "1"):
            PAGER = True
            print "# setting PAGER True"
        elif tokens[0] in ("off","false","f","0"):
            PAGER = False
            print "# setting PAGER False"
        else:
            print "# can't set pager:  don't know -> %s" % tokens[0]
    def do_demo(self,line):
        results = dict(a=1,b=2,c=3)
        self.format_commandline_results(results)
    def format_commandline_results(self,results):
        if PAGER:
            ofh = StringIO()
        else:
            ofh = sys.stdout
        for (k,v) in sorted(results.items()):
            print >> ofh, "%s -> %s" % (k,v)
        if PAGER:
            ofh.seek(0)
            pager(ofh.read())
        return None
    def do_EOF(self,line):
        print "",
        return True
if __name__ == "__main__":
    Commander().cmdloop("# try: \n> pager off \n> demo \n> pager on \n> demo \n\n")