Because to handle really long numbers, you've almost got to store them in (constructed) arrays of differing sizes (or risk wasting tons of RAM), avoiding constructors probably won't gain you much.
The BigInteger class (which implements key parts of BigDecimal) does try to minimize overhead, however, by providing pre-constructed values, and since they're immutable can be kept in an inexhaustible pool. The spec apparently mandates that the values 0, 1, 10, and 100 should always be pre-constructed, but the GNU implementation also pre-constructs in the range of -100 to 1000.
As always,
you should measure before attempting to optimize - it's entirely possible that any overhead from constructors would be swamped by long-precision calculations anyway.
But I'm not optimistic that you can easily out-perform the standard class without paying a penalty somewhere. The most likely way (to me) to avoid constructions would be to create a class with a fixed number of digit slots a la an array of bytes. And pay the price in RAM.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.