SGF generated has a sub-tree for every move

This issue has been raised before. See the relevant discussion here:

Technically, it does not violate the SGF standard, but it adds a lot of needless parentheses, and I fully support addressing this issues, as you suggest.

Interesting that you report that this causes issues with some other SGF programs. Which in particular?