Is there a reason to store currency amounts as fractions instead of decimals? I've been reviewing GnuCash's DB design and I found that they are storing amounts as two 64-bit integers, the numerator and denominator of a fraction.

Is there some advantage from a DB perspective to storing financial data this way?  I always learned (in MS SQL Server) to use decimal(18,4) for currencies values.
There's no advantage from a DBMS perspective, but it may allow better data management, if you are dealing with some unusual form of currency.  For example, if you had a currency where the basic unit is the pound, and the pound is composed of 20 shillings, and each shilling is composed of 12 pennies, it would sometimes be impossible to represent an exact number of pennies as a decimal fraction of some number of pounds.  

If penny amounts were represented as approximations, round off error would begin to creep in when arithmetic operations were performed.  

Such a currency may seem unbelievably quirky, but this is the way British currency worked when Elizabeth II ascended to the throne.  There may be currencies in the world today that still work in a similar way.