Before that, I tried a HP printer but it was terrible. My uncle wants a "all-in-one" and prints especially pictures (he is a photograph). The quality of my Brother printer is enough good for that. He wants to check the ink's level (on the printer or in the OS), be able to print some standard pictures (10x15, 10x13, etc.) and I really want to have no problem with the hardware. (For example, my parents had a HP printer and they had to reinstall it very often...I never understood why !).
All-in-one printers present a challenge to unix like systems. If you look at the dmesg you will see that usb ports are assigned a device such as a printer or scanner. My understanding is that cups and sane do not allow for sharing a usb port between the two of them. Hewlett Packard provides the hplip system for linux that will reassign the usb port to scan or print. Hplip essentially utilizes python scripts for cups/sane and only supports HP. I personally use a Canon scanner on usb and a Brother Monochrome laser on ethernet. With a hardware phone modem or a lucent software modem, it is possible to set up Xsane to scan and fax. Essentially you can duplicate all the functions of an all-in-one.
It would be possible to mix usb scanning with either wireless or ethernet printing and use other manufacturers devices. Be aware that printing a large 10x15 color picture over wireless b/g is extremely slow.
The issue with your parents having to reinstall an HP printer was likely due to the use of dhcp printer address in Windows. A brief power outage can result in devices being reassigned a different address. Ideally, it is best to assign a static IP to a network printer.