Motivation: All configuration should take place in bin/cassandra.in.sh (for non-Windows) and the various conf/ files. In particular, bin/cassandra should not need to be modified upon installation. In many installs, $CASSANDRA_HOME is not a writable location, the yaml setting 'data_file_directories' is being set to a non-default location, etc. It would be good to have a single variable in an explicit conf file to specify where logs should be written.
For non-Windows installs, there are currently two places where the log directory is set: in conf/cassandra-env.sh and in bin/cassandra. The defaults for these are both $CASSANDRA_HOME/logs. These can be unified to a single variable CASSANDRA_LOGS that is set in conf/cassandra-env.sh, with the intention that it would be modified once there (if not set in the environment) by a user running a custom installation. Then include a check in bin/cassandra that CASSANDRA_LOGS is set in case conf/cassandra-env.sh doesn't get sourced on startup, and provide a default value if not. For the scenario that a user would prefer different paths for the logback logs and the GC logs, they can still go into bin/cassandra to set the second path, just as they would do currently. See "unified_logs_dir.patch" for a proposed patch.
No change seems necessary for the Windows scripts. The two uses of $CASSANDRA_HOME/logs are in the same script conf/cassandra-env.ps1 within scrolling distance of each other (lines 278-301). They haven't been combined I suppose because of the different path separators in the two usages.