The choice of indexing is the source of quite a bit of contention - from a programming perspective 0 based, open end indexing is far more preferable. From a user interface perspective and when communicating with life scientists a 1 based inclusive indexing is absolutely required.
Being off by one is an endemic problem in bioinformatics and has probably already caused tens if not hundreds of millions of dollars in wasted resources (incorrect results etc).
Historically numerical oriented languages such as Fortran and for example R are one based. General programming oriented languages such as C, Java, Perl, Python are zero based. Personally I believe that Bio* projects should use one based indexing as it is the lesser of two evils, it seems the BioJava developers think the same way.
I don't think there really is a reason it chose to use 1-based arrays. Perhaps because gene sequences are 1-based inclusive and they wanted arrays to be reflective of that.
Really? Biopython sequences are definitely zero-based, NOT one-based. This is to follow Python conventions.