You can put your XAML drawings into resourcedictionaries and then just reference them. This will produce assemblies that remain small, you get the simplicty of just adding a reference to a drawing and you get completely "minified" XAML. No extra keystrokes required compared to your first approach.
Somewhere in your project you have a resourcedictionary that contains the drawing:
<DrawingImage x:Key="image1">
<DrawingImage.Drawing>
<GeometryDrawing>
<GeometryDrawing.Geometry>
<GeometryGroup>
<EllipseGeometry Center="50,50" RadiusX="45" RadiusY="20" />
<EllipseGeometry Center="50,50" RadiusX="20" RadiusY="45" />
</GeometryGroup>
</GeometryDrawing.Geometry>
<GeometryDrawing.Brush>
<LinearGradientBrush>
<GradientStop Offset="0.0" Color="Blue" />
<GradientStop Offset="1.0" Color="#CCCCFF" />
</LinearGradientBrush>
</GeometryDrawing.Brush>
<GeometryDrawing.Pen>
<Pen Thickness="10" Brush="Black" />
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingImage.Drawing>
</DrawingImage>
This will not take up more space that a bitmap that you'd add to your assembly as a resource depending on the size and complexity of the bitmaps chances are, that you acutally save space using xaml.
Then in your code you reference this drawing just you would refernce your bitmap. There is no difference:
<Image Source="{StaticResource image1}" />
You can use Microsoft Expression Design to automatically vectorize your bitmaps ("Object->Image->Autotrace Bitmap") and export them as XAML drawings. It will create a DrawingBrush though. But you can safely replace it with DrawingImage.