A principal limitação é que, com um endereço IP, você pode ter um certificado ssl.
Como você só quer ssl no blog, então não há problema com a configuração que você propôs, apenas torne-o o único virtualhost ouvindo 443
# Virtualhosts on ports 80 and 443
NameVirtualHost *:80
NameVirtualHost *:443
# rewrite blog traffic to https
<VirtualHost *:80>
ServerName blog.example.com
DocumentRoot /var/www/blog
RewriteEngine On
RewriteRule ^(.*)$ https://blog.example.com/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
ServerName blog.example.com
DocumentRoot /var/www/blog
</VirtualHost>
<VirtualHost *:80>
ServerName othersite.example.com
DocumentRoot /var/www/other/
</VirtualHost>
A pequena limitação aqui, é que o blog vai pegar todo o tráfego de https aqui, independentemente do nome do host, então o link irá apontar para o blog , e gerar erros porque o nome não corresponde ao certificado, mas não há maneira de contornar isso com um endereço IP.