BDSup2Sub is the original version, written in Java (and therefore requiring the Java Runtime environment). There is a relatively recent evolution called BDSup2Sub Enhanced, that adds partial multiple ODS support. Both versions have a couple of bugs.
BDSup2Sub++ is a version rewritten in C++ (and therefore that doesn't require an additional runtime environment). The latest version supports multiple ODS, but it has some bugs and it creates sometimes black subtitles when it converts from BD SUP to XML/PNG when it thinks (wrongly) that there are multiple ODS.
Currently, no version is perfect (except perhaps when using it for DVD SUB only). I have explained
elsewhere what version to use to convert from a specific format to another. With some luck, we will soon have a bug free version, thanks to amichaelt. :-)