The particular example you've posted wouldn't really have any advantage over using a normal constructor. There are two common patterns, however, which use a method like this to yield an object:
Singleton Pattern
The singleton pattern can be used when you want to prevent multiple instances of an object from being created but still want to leverage the object-oriented aspects of a class (e.g., fields, properties, parameterless methods). Example:
public class MySingletonClass
{
private MySingletonClass currentInstance = null;
public MySingletonClass CreateInstance()
{
if (currentInstance == null)
{
currentInstance = new MySingletonClass();
}
else
{
return currentInstance;
}
}
}
Factory Pattern
The factory pattern is a great opportunity to abstract the creation of concrete classes; for example, let's assume for a moment that you have some XML, and depending on which node (NodeA, NodeB, or NodeC) you see in the XML, you have a different class that will process it. Example:
public class MyXmlProcessorFactory
{
public static IMyXmlProcessor GetMyXmlProcessor(XmlDocument document)
{
XmlNode rootNode = document.DocumentElement;
if (rootNode.SelectSingleNode("NodeA") != null)
{
return new NodeAMyXmlProcessor();
}
else if (rootNode.SelectSingleNode("NodeB") != null)
{
return new NodeBMyXmlProcessor();
}
else if (rootNode.SelectSingleNode("NodeC") != null)
{
return new NodeCMyXmlProcessor();
}
else
{
return new DefaultMyXmlProcessor();
}
}
}