A more correct analogy for nested family tables is creating functions instead of using in-line code.
It isn't lazy - it's compact and representative of the structure. If there are cases where a function isn't called correctly, that is a compiler or interpreter error, not laziness on the part of the programmer.
If nesting isn't working then that's probably a case the PTC developers need to fix. The concept isn't complicated and it isn't new. The model interpreter puts the current level of interpretation on hold, just like when it finds a subassembly, then evaluates the next level, and then continues with the level it paused.
The main family table implementation problem (on PTC's side) is that it has silent fail. If a feature is suppressed in the family table and another feature/component that depends on it is not specifically in the table, PTC will silently suppress that as well, leading to features and components that are missing in the model without notice and without explicitly being controlled in the family table.
The silent fail is what causes family table users the most trouble. Problems should show up when the table is verified, but it is still silent there as well. I suspect it is a response to user complaints and marketing response to those complaints that the tables failed all the time. Rather than making users responsible for ensuring models are built to represent what they explicitly called for, they made it easier to be wrong un-noticed.
In software development, it's the equivalent of calling a function that does not exist and having the compiler skip it.
I wonder if the problem with this assembly is that the family table wasn't verified before it was last saved. Not verifying also leads to a bunch of hard to explain problems. Search paths will have nothing to do with retrieval problems unless the parts that are being retrieved are not the parts the assembly was originally built with, such as from having copies of X in two different folders, with X1 having been explicitly retrieved for the initial assembly by digging through folders and X2 being found by the search path.
This is another silent fail - PTC does not (didn't use to) save the path to the parts, so is unable to tell the user a different part with the same name has been substituted. This also leads to unhappy people saying 'it worked yesterday, but not today.'