It's a useful technique and I've used it on every major project I've worked on over the last few years. However, there is another way to get record type information. Take the following example:
oppRecTypes = Opportunity.SObjectType.getDescribe().getRecordTypeInfos();
There are also the following methods:
oppRecTypesByID = Opportunity.SObjectType.getDescribe().getRecordTypeInfosByID();
oppRecTypesByName = Opportunity.SObjectType.getDescribe().getRecordTypeInfosByName();
These all return RecordTypeInfo objects in some way, shape or form, but without using up one of you SOQL queries! These calls are not without penalty however - instead of a SOQL query, you use up a "record type describe", which you have a hundred of in a transaction on EE. So you'll still want to apply the memoization (cache) pattern explained in the Force.com 201 blog.
There is one other drawback - RecordTypeInfos do not appear to have any reference to the developer name of a record type. Really, both record type names and developer names can be changed pretty easily which could introduce breakage to your code, however developer names are less likely to change in my opinion, so querying the record type table can be a safer option.