In case my comment was confusing: 'for people who can't define PHP output compressions in php.ini' does not include 1and1 shared hosting. I was meaning other hosts.
1and1 users can define php output compression in php.ini. The <?php ob_start("ob_gzhandler"); ?> trick also works, so they have two options for compressing the PHP on the fly.
The php.ini option would be better for 1and1 users as it means that all PHP output gets compressed... except for if the php file is loaded via the mod_rewrite rules (which I've tested by adding a .html.php redirect section to the .htaccess). I don't understand why the php.ini enabled compression isn't working in this case. Something I might look into later. Maybe something simple I'm doing wrong.
In summary with your changes 1and1 users can:
1. Have the static pages pre-gzipped (as .gz files) and served via mod_rewrite. i.e. minimal CPU load on average, and minimal file size.
2. Have the dynamic pages served via php and gzipped on the fly by defining compression in php.ini. (or alternatively by having the compression done in WP Super Cache, but at the expense of the first generated page being uncompressed). Both of which gives them minimal file size, but with a CPU hit.
Hope that clears the 1and1 situation up.
Another random thought I just had: if the CPU load of 'on the fly' compression in PHP were a problem for some people, maybe WP Super Cache could check the CPU load before serving the file, and then only compress if the CPU load were below a certain threshold. Is it expensive to check the CPU load? I know the broken link checker plugin for example can be configured to only run when the CPU load is acceptable.
Things would become a bit more complicated if you were to add mod_rewrite support for the dynamic files.
Would be cool to have options to turn all these features on and off though for users who know what they are doing.